📄 file4.c
字号:
//内部定时器实验
//现象 P1.0 一秒钟一次的闪烁
#include <8051.h>
#define OSCILLATOR 12000000 // 定义晶振频率
#define TIMER0_RELOAD_VALUE -(OSCILLATOR/12/1000) // 定时器 1ms 定时 的初值
static long data milliSeconds; // 毫秒数
void ClockIrqHandler (void) interrupt 1 using 3; // 定义定时器T0中断服务程序
// 下面是定时器T0的中断服务程序
void ClockIrqHandler (void) interrupt 1 using 3 {
TL0 = TIMER0_RELOAD_VALUE%256;
TH0 = TIMER0_RELOAD_VALUE/256;
milliSeconds++;
}
void main()
{
P1 = 255; //关闭LED显示
P0 = 0; //关闭数码显示
P2 = 255; //
P3_7 = 0; //关闭蜂鸣器
milliSeconds = 0;
TR0=1; // 停止定时器T0的运行
TL0 = TIMER0_RELOAD_VALUE&0xff; //初值
TH0 = TIMER0_RELOAD_VALUE>>8; //初值
TMOD = 0; // 定时器工作在方式0
ET0=1; // 允许定时器T0中断
EA =1; // 中断总允许
TR0=1; // 开始定时器T0
while(1) // 设置一个无限制循环
{
if(milliSeconds ==1000)
{
P1_0 =~P1_0; // 翻转 P1.0 显示每秒
milliSeconds = 0; // 到了一秒钟以后,需要把这里清空,重新计数
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -