// Test6.pas
Program NewProgram;
// 本程序使用 Trubo51( https://turbo51.com/ ) 单片机 PASCAL 编译器
//
//
// 本程序演示 如何对定时器 0 编程 ,每次中断后逐一连续点亮LED灯
// CPU 电路图、LED灯、蜂鸣器电路图请看前面实例
// 8051 单片机有两个定时器/计数器: T0 与 T1
//
uses
Delay,MyDefine;
// 定义定时器0中断程序 ,中断号External1在 system 中定义
procedure OnTimer0; interrupt Timer0 ; using 1;
begin
TH0:=0; // 要重新置0,硬件在这种模式是不会自动重填的
TL0:=0;
LED:= LED SHL 1;
end;
begin
// 环境初始化
LED:=$FF ; // 全不亮
FM:=BEEP_OFF ;
// TMOD : D7 D6 D5 D4 | D3 D2 D1 D0
// T1 | T0
// GATE CT M1 M0 | GATE CT M1 M0
TMOD:=$01; // 设置 T0 工作方式为 1 ,16位定时器
// TCON : D7 D6 D5 D4 | D3 D2 D1 D0
// TF1 TR1 TF0 TR0 | IE1 IT1 IE0 IT0
TH0:=0; // 计数器清零,每一个机器周期自动加1,超过65535 溢出 产生中断
TL0:=0;
EA:=True; // 全局中断开
ET0:=TRUE; // 定时器0 中断开
TR0:= TRUE ; // 打开定时器 0
// 循环里的命令可以中断同步进行
while true do begin
if $00=LED then LED:=$FF; //灯全亮时要重新关闭
Delayms(500);
FM:=NOT FM;
end;
end.