機器週期 =12/Fosc = 12/(12MHz) =1μs,4ms方波的半週期=2ms,
計數值 =2ms/1μs =2000
用微控制器定時器T1,工作方式1,16位計數暫存器,
計數初值 =2^16 -2000 =63536 =F830h
;; T1初始化程式:
MOV TMOD, #00010000b ;; T1 , 定時模式 , 方式1
MOV TH1, #0F8h ;; 裝入初值高8位
MOV TL1, #30h ;; 裝入初值低8位
SETB ET1 ;; 允許T1中斷
SETB EA ;; MCU開中斷
SETB TR1 ;; 啟動T1
WAIT: SJMP WAIT ;; 等待T1中斷
;; T1中斷服務程式(每隔半週期,T1計時溢位中斷一次):
CPL P2.5 ;; P2.5引腳輸出電平反轉(高變低或低變高)
MOV TH1, #0F8h ;; 重灌初值高8位
MOV TL1, #30h ;; 重灌初值低8位
RETI ;; 中斷返回
機器週期 =12/Fosc = 12/(12MHz) =1μs,4ms方波的半週期=2ms,
計數值 =2ms/1μs =2000
用微控制器定時器T1,工作方式1,16位計數暫存器,
計數初值 =2^16 -2000 =63536 =F830h
;; T1初始化程式:
MOV TMOD, #00010000b ;; T1 , 定時模式 , 方式1
MOV TH1, #0F8h ;; 裝入初值高8位
MOV TL1, #30h ;; 裝入初值低8位
SETB ET1 ;; 允許T1中斷
SETB EA ;; MCU開中斷
SETB TR1 ;; 啟動T1
WAIT: SJMP WAIT ;; 等待T1中斷
;; T1中斷服務程式(每隔半週期,T1計時溢位中斷一次):
CPL P2.5 ;; P2.5引腳輸出電平反轉(高變低或低變高)
MOV TH1, #0F8h ;; 重灌初值高8位
MOV TL1, #30h ;; 重灌初值低8位
RETI ;; 中斷返回