KEY BIT P1.7
LCNT EQU 30H
HCNT EQU 31H
FLAG EQU 33H ;计数标志
ORG 00H
SJMP START
ORG 0BH ;中断入口
LJMP INT_T0
START: MOV LCNT,#00H
MOV HCNT,#00H
CLR FLAG
MOV TMOD,#01H
MOV TH0,#(65536-700)/256 ;定时0.7毫秒
MOV TL0,#(65536-700)MOD 256
S1: JB KEY,$ ;等待按键
LCALL DELAY
JB KEY,$
MOV IE,#82H
SETB TR0
SJMP S1
INT_T0: INC LCNT
MOV A,LCNT
CJNE A,#100,I1
MOV LCNT,#00H
INC HCNT
MOV A,HCNT
CJNE A,#05H,I1 ;输出500个周期方波
MOV HCNT,#00H
INC FLAG ;计数标志加1
I1: CPL P1.0
MOV A,FLAG
CJNE A,#00H,I2
LJMP K1 ;FLAG=0,发高频音
I2: MOV A,FLAG
CJNE A,#01H,I3
LJMP K2 ;FLAG=1,发低频音
I3: MOV A,FLAG
CJNE A,#02H,I1
MOV FLAG,#00H
CLR TR0 ;FLAG=2,关定时器
LJMP RETUNE
K1: MOV TH0,#(65536-700)/256 ;高频音
MOV TL0,#(65536-700)MOD 256
LJMP RETUNE
K2: MOV TH0,#(65536-1000)/256 ;低频音
MOV TL0,#(65536-1000)MOD 256
RETUNE: RETI
DELAY: MOV R5,#20
D1: MOV R6,#250
DJNZ R6,$
DJNZ R5,D1
RET
END
提示行14有多余字符 ! 急急急
------最佳解决方案--------------------------------------------------------
不懂这个汇编,看 14 行的内容,不支持 MOD 操作?还是 MOD 前需要个空格分隔开?
------其他解决方案--------------------------------------------------------
用伟福编译时候出现的错误