利用单片机内部定时器T0以中断方式计时,实现每一秒钟使P2.0的输出状态发生一次反转,形成方波输出。
答案:1 悬赏:40 手机版
解决时间 2021-04-01 01:33
- 提问者网友:做自己de王妃
- 2021-03-31 05:06
利用单片机内部定时器T0以中断方式计时,实现每一秒钟使P2.0的输出状态发生一次反转,形成方波输出。
最佳答案
- 五星知识达人网友:不想翻身的咸鱼
- 2021-03-31 05:51
#include //包含52系列头文件
#define th0 0x3c
#define tl0 0xb0 //50ms at 12MHz Fosc
#define T1sAt50msCount 20 //1s计数值
sbit WaveOut1=P2^0; //定义 方波1输出 端口
void Timer0() interrupt 1 //定时器T0 中断 函数
{
static uchar t50ms=0;
TL0=tl0;
TH0=th0;
if(++t50ms>=T1sAt50msCount)
{
t50ms-=T1sAt50msCount;
WaveOut1=~WaveOut1; //方波1输出 端口 电平翻转
}
}
void TimerInit() //定时器初始化 函数
{
TMOD=0x01; //T0 16位定时器
EA=1; //允许系统中断
ET0=1; //允许T0中断
TH0=th0;
TL0=tl0; //50ms 初值
TR0=1; //T0开始计时
}
void main() //主函数
{
TimerInit(); //调用 定时器初始化 函数
while(1); //循环系统
}
直接打字的,未编译
#define th0 0x3c
#define tl0 0xb0 //50ms at 12MHz Fosc
#define T1sAt50msCount 20 //1s计数值
sbit WaveOut1=P2^0; //定义 方波1输出 端口
void Timer0() interrupt 1 //定时器T0 中断 函数
{
static uchar t50ms=0;
TL0=tl0;
TH0=th0;
if(++t50ms>=T1sAt50msCount)
{
t50ms-=T1sAt50msCount;
WaveOut1=~WaveOut1; //方波1输出 端口 电平翻转
}
}
void TimerInit() //定时器初始化 函数
{
TMOD=0x01; //T0 16位定时器
EA=1; //允许系统中断
ET0=1; //允许T0中断
TH0=th0;
TL0=tl0; //50ms 初值
TR0=1; //T0开始计时
}
void main() //主函数
{
TimerInit(); //调用 定时器初始化 函数
while(1); //循环系统
}
直接打字的,未编译
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯