回覆列表
-
1 # 使用者9511985992372
-
2 # 麼的錄影片
如果是11.0592MHz的晶振,那麼程式是:void delay(uint xms){ int i,j; for(int i=xms;i>0;i--) for(j=148;j>0;j--);}delay(1)是延時1ms,所以延時一秒就是delay(1000);還有不懂的可以繼續問
如果是11.0592MHz的晶振,那麼程式是:void delay(uint xms){ int i,j; for(int i=xms;i>0;i--) for(j=148;j>0;j--);}delay(1)是延時1ms,所以延時一秒就是delay(1000);還有不懂的可以繼續問
delay1000ms:(HT46R65的微控制器)(注意不要開啟計時中斷允許位)
mov a,10000111b (設定頻率和記數方式)(上升記數還是下降記數)
mov tmr0c,a (tmr0c 計數器的控制暫存器)
mov a,low(65536-31250) (設定的頻率就是1S上升31250)因此是DELAY1S mov TMR0L,a (計數器的賦予初始值的低位暫存器)
mov a,high(65536-31250) mov TMR0h,a(計數器的賦予初始值的高位暫存器)
set tmr0c.4 (開啟記數)
snz intc0.6 (是否有中斷請求標誌)(有就跳過)
jmp $-1 (退回一步)
clr tmr0c.4 (關閉記數)
clr intc0.6 (清除中斷標誌)
ret