某单片机控制系统需要在P1.2引脚输出周期为10ms的等宽方波,已知晶振频率为12MHz,要求用定时器0,工作方式2,中断方式,编写程序
1个回答
关注
展开全部
#include void timer0_init(void){ TMOD = 0x01; //定时器0工作模式1 TH0 = 0xB8; //定时器0初值120万次 TL0 = 0x00; TR0 = 1; //定时器0开始计时 ET0 = 1; //使能定时器0中断 EA = 1; //使能总中断}void main(void){ timer0_init(); //初始化定时器0 P1 = 0x00; //将P1口设置为输出 P1_2 = 1; //将P1.2口设置为等宽方波 while(1);}/*该程序的功能是使用定时器0在P1.2引脚输出周期为10ms的等宽方波,已知晶振频率为12MHz。*/
咨询记录 · 回答于2022-12-23
某单片机控制系统需要在P1.2引脚输出周期为10ms的等宽方波,已知晶振频率为12MHz,要求用定时器0,工作方式2,中断方式,编写程序
1 写出计数初值的计算过程2 编写程序
麻烦了
好的
计数初值的计算过程是:首先,计算出定时器0的计数值,计数值=12000000/10ms=120000,然后将计数值赋值给定时器0的计数寄存器,即可得到计数初值。
如果编写程序,你需要说明你要实现的功能
这个问题有点太抽象了
介绍具体的功能
有个这个表你看是要求吗
是的
#include void timer0_init(void){ TMOD = 0x01; //定时器0工作模式1 TH0 = 0xB8; //定时器0初值120万次 TL0 = 0x00; TR0 = 1; //定时器0开始计时 ET0 = 1; //使能定时器0中断 EA = 1; //使能总中断}void main(void){ timer0_init(); //初始化定时器0 P1 = 0x00; //将P1口设置为输出 P1_2 = 1; //将P1.2口设置为等宽方波 while(1);}/*该程序的功能是使用定时器0在P1.2引脚输出周期为10ms的等宽方波,已知晶振频率为12MHz。*/