;timer 0, mode 1 練習 ;此範例將timer 0的GATE設為1, 可由INT0按鍵控制計時器啟動或停止 buffer equ 30h ;-------------------------------------- mov buffer,#0 count: mov a,buffer cpl a mov p2,a call delay inc buffer jmp count ;-------------------------------------- delay: mov tmod,#00001001b ;設定timer 0 工作於 mode 1, timer 0的GATE設為1 mov r6,#20 ;計數20次, 共1秒鐘 loop: mov th0,#(65536-50000) / 256 ;計數50000次, 共50000微秒 mov tl0,#(65536-50000) mod 256 setb tr0 ;啟動 jnb tf0,$ ;判斷tf0是否等於1(計時溢位), 否則停在此行 clr tf0 ;清除溢位旗號 clr tr0 ;關閉計時器 djnz r6,loop ret ;-------------------------------------- end