求一个单片机方波占空比输出方波的程序

单片机中断程序做一个一毫秒方波输出程序_百度知道
单片机中断程序做一个一毫秒方波输出程序
提问者采纳
说的比较笼统:1、单片机中断定时可以实现,你选择的晶振是多少?2、是51单片机吗?下面给你一个T=1ms的51单片机晶振是11.0592M的参考程序,希望对你有用。void Init(void)//声明中断定时初始化{ EA=1;//中断总开关 TMOD=0x01;//T0工作模式是方式1
ET0=1; TH0=0 //定义初始值0.5ms
实际应用中可以技术 TL0=0x18; TR0=1; //关闭T0计时 }void timer0() interrupt 1 //using 0 //T0定时 定时0.5ms{
TH0=0 TL0=0x18; p10=~p10;
EA=1;}sbit p10=P1^0;中断定时 在p1.0口输出T=1ms的方波
(TH0 TL0实际中要计算,本例以0.5ms为例)希望对你有帮助转载请注明:出处,谢谢合作
提问者评价
其他类似问题
为您推荐:
您可能关注的推广
单片机的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁注册时间: 12:33
论坛积分:3
/******************************************************************************&
* & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &*&
*关于频率和占空比的确定,对于12M晶振,假定PWM输出频率为1KHZ,这样定时中断次数 *&
*设定为C=10,即0.01MS中断一次,则TH0=FF,TL0=F6;由于设定中断时间为0.01ms,这样*&
*可以设定占空比可从1-100变化。即0.01ms*100=1ms & & & & & & & & & & & & & & & *&
******************************************************************************/&
#include &REGX51.H&&
#define uchar unsigned char & & &
/*****************************************************************************&
* TH0和TL0是计数器0的高8位和低8位计数器,计算办法:TL0=(65536-C)%256; & & & & *&
* TH0=(65536-C)/256,其中C为所要计数的次数即多长时间产生一次中断;TMOD是计数器*&
* 工作模式选择,0X01表示选用模式1,它有16位计数器,最大计数脉冲为65536,最长时 *&
* 间为1ms*ms & & & & & & & & & & & & & & & & & & & & & & & & & & *&
******************************************************************************/ & & & & & & & &
#define V_TMOD 0X01 & & & & & & & & &
void init_sys(void); & & & & & &/*系统初始化函数*/&
void Delay5Ms(void);&
unsigned char ZKB1;&
void main (void)&
& static uchar click=0; &&
& unsigned int x=;
& TMOD=V_TMOD;&
& TH0=x/256;&
& TL0=x%256;&
& ZKB1=40; & & & & & &/*占空比初始值设定*/&
& while(1)&
& & & &if (!P1_4)&
& & & &Delay5Ms();&
& & & &if (!P1_4)&
& & & & &{&
& & & & &ZKB1++;&
& & & & &}&
& & & &if (!P1_5) //如果按了-键,减少占空比&
& & & &Delay5Ms();&
& & & &if (!P1_5)&
& & & & &{&
& & & & &ZKB1--;&
& & & & &}&
if (ZKB1&99) ZKB1=1;&
if (ZKB1&1) ZKB1=99;
&if (!P1_5)&
& & & &Delay5Ms();&
& & & &if (!P1_5)&
& & & & &{&
& & & & &x++;&
& & & & &}&
&if (!P1_6)&
& & & &Delay5Ms();&
& & & &if (!P1_6)&
& & & & &{&
& & & & &x--;&
& & & & &}&
if (x&()) x=;&
if (x&()) x=;
while(TF0){
& & & & & & & &
TH0=x/256; & & & & & & & & & & & & & & & & &&
TL0=x%256;&
if (click&=100) click=0;&
if (click&=ZKB1){ & & &
P1_2=1; &&
/******************************************************&
*函数功能:对系统进行初始化,包括定时器初始化和变量初始化*/&
void Delay5Ms(void)&
unsigned int TempCyc = 1000;&
while(TempCyc--);&
注册时间: 10:41
回复数: 63975
主题数: 391
酷贴数:28
论坛积分:67948
来自: 湖南
试试便知。
我的淘宝小店:
请选择一个版面...
STM32-F0/F1/F2专区
STM32-F3/F4专区
MSP430专区
ARM7/ARM9/ARM11专区
其他Cortex系列
uCOS & uCGUI & Emwin
trochili(飞鸟)操作系统
中国RTOS联盟
FPGA/CPLD/DSP专区
数字,模拟,高频电路
编程语言学习
蓝牙/WIFI/Zigbee等通信技术
开发工具专栏
UOL 单片机面向对象语言
四轴飞行器
DIY大赛专区
DIY项目资料专区
论坛建设区
二手交易专栏
& 开源电子网() | 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
51 单片机和DAC0832输出方波、矩形波和正弦波由液晶1602显示的C语言程序
下载积分:800
内容提示:51 单片机和DAC0832输出方波、矩形波和正弦波由液晶1602显示的C语言程序
文档格式:DOC|
浏览次数:0|
上传日期: 03:53:50|
文档星级:
该用户还上传了这些文档
51 单片机和DAC0832输出方波、矩形波和正弦波由液晶16
官方公共微信51单片机和DAC0832输出方波、矩形波和正弦波由液晶1602显示的C语言程序
基于dac083251单片机方波正弦波三角波的编程
51单片机和DAC0832输出方波、矩形波和正弦波由液晶1602显示的C语言程序下载
下载资料需要,并消耗一定积分。
下载此资料的人还喜欢:
技术交流、我要发言! 发表评论可获取积分! 请遵守相关规定。
本周热点资料
电子资料热门词
上传者其它资料
通信网络下载排行用STM8S105单片机写一个输出频率为2KHz的方波,C语言? 没用过stm8单片机,求入门资料。谢谢!_百度知道
用STM8S105单片机写一个输出频率为2KHz的方波,C语言? 没用过stm8单片机,求入门资料。谢谢!
提问者采纳
//此例程是通过TIM2 CH1(PD4脚)通道来输出一个频率2K 占空比可调的方波,占空比可通过PD7脚的按键调#include &STM8S105K.h&typedef unsigned char u8;typedef unsigned int u16;u16 void SystemInit(void)
CLK_CKDIVR = 0x08;
// 16M内部RC经2分频后系统时钟为8M
CLK_PCKENR1 |= 0x60;
//使能TIM2与TIM3与主频连接
PD_CR2 |= 0x80;
//使能PD7口外部中断
} void GPIO_init(void)
PD_DDR = 0x1F;
//配置PD端口的方向寄存器全输出
PD_CR1 = 0x1F;
//设置PD为推挽输出
}void TIM2_init(void)
//TIM2 CH1 工作于模式1
TIM2_CCMR1= 0x60;
// PWM 模式 1,TIM2 CH1
TIM2_CCER1= 0x03;
// CC1配置为输出
TIM2_ARRH = 0x07;
// 配置PWM分辨率为10位,ARR=0x07D0
TIM2_ARRL = 0xD0;
// PWM频率=8M/0x07D0=2000Hz
TIM2_CR1 |= 0x01;
// 计数器使能,开始计数
}void init_devices(void)
asm(&sim&);
SystemInit();
GPIO_init();
TIM2_init();
_asm(&rim&); //开总中断
} void main( void )
{ init_devices(); while(1) TIM2_CCR1=//改变value值可改变频率
}/******************************************************************************* 函数名
: @near @interrupt void TLI_IRQHandler (void)*** 功能描述: 中断服务程序
按下PD7口按键来改变占空比*****************************************************************************/@near @interrupt void TLI_IRQHandler (void) {
PD_CR2 &= 0x7F;
//关PD7外部中断
value+=50;
while(value&1000)
PD_CR2 |= 0x80;
//使能PD7口外部中断
提问者评价
其他类似问题
为您推荐:
stm8的相关知识
其他1条回答
建议楼主参考中国电子DIY之家有关作品
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 单片机输出方波程序 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信