51单片机-PASCAL语言实例 6:使用定时器0

// 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.
上一篇:clementine for Mac(多平台音乐管理播放软件)


下一篇:04-05 提升树