;timer 0, mode 1 練習 ;此程式因使用到82G516才有之暫存器, 所以須先載入82G516暫存器定義檔 $INCLUDE (REG_MPC82G516.inc) ;for MPC82G516 暫存器定義檔 buffer equ 30h ;-------------------------------------- mov buffer,#0 mov tmod,#00000001b ;設定timer 0 工作於 mode 1 orl AUXR2,#10000000b ;將AUXR2暫存器中的T0X12設為1 count: mov a,buffer cpl a mov p2,a call delay inc buffer jmp count ;-------------------------------------- delay: 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