机器周期 =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 ;; 中断返回