用c语言编程实现C8051F300单片机1s定时,50Hz的方波输出
答案:2 悬赏:0 手机版
解决时间 2021-02-14 17:43
- 提问者网友:我是我
- 2021-02-14 09:09
请高手帮忙编程用c语言实现C8051F300单片机1s定时,50Hz的方波输出,最好在关键程序处用中文注释,非常感谢!
最佳答案
- 五星知识达人网友:上分大魔王
- 2021-02-14 10:42
#include
sbit wave=P1^0;
void SetupTimer0()
{
TMOD &= 0xF0; //仅保留T1信息
TMOD |= 0x02; //设置T0: 定时功能,方式2,自动重载8位定时器/计数器
TH0 = 256-250;//定时每0.25ms中断一次
TL0 = 256-250;
TR0 = 1; //开启定时器
ET0 = 1; //定时器0中断打开
}
data unsigned char us250;
data unsigned int ms;
bit WAVE; //用以记住当前wave的状态
void Timer0_ISR() interrupt 1 //定时中断服务程序,为按键消抖服务
{
if (++us250<4) return;
us250=0; ++ms;
if (ms<10) return;
//每10ms波形变化一次,20ms完成一个波形,所以波形是50Hz的
ms=0;
WAVE=~WAVE; wave=WAVE; //方波输出
}
void main()
{
us250=ms=0;
wave=WAVE=0;
SetupTimer0();
EA = 1; //全局中断打开
while(1); //在中断函数中实现方波输出
}
sbit wave=P1^0;
void SetupTimer0()
{
TMOD &= 0xF0; //仅保留T1信息
TMOD |= 0x02; //设置T0: 定时功能,方式2,自动重载8位定时器/计数器
TH0 = 256-250;//定时每0.25ms中断一次
TL0 = 256-250;
TR0 = 1; //开启定时器
ET0 = 1; //定时器0中断打开
}
data unsigned char us250;
data unsigned int ms;
bit WAVE; //用以记住当前wave的状态
void Timer0_ISR() interrupt 1 //定时中断服务程序,为按键消抖服务
{
if (++us250<4) return;
us250=0; ++ms;
if (ms<10) return;
//每10ms波形变化一次,20ms完成一个波形,所以波形是50Hz的
ms=0;
WAVE=~WAVE; wave=WAVE; //方波输出
}
void main()
{
us250=ms=0;
wave=WAVE=0;
SetupTimer0();
EA = 1; //全局中断打开
while(1); //在中断函数中实现方波输出
}
全部回答
- 1楼网友:酒醒三更
- 2021-02-14 11:57
支持一下感觉挺不错的
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯