本文包含原理图、PCB、源代码、封装库、中英文PDF等资源
您需要 登录 才可以下载或查看,没有账号?注册会员
×
大家好啊,请帮我解决这个问题,因为这程序没有达到我想到的目的,此程序功能为按一下键,产生外部中断0,使P1.7输出声音,但程序没有达到,请帮忙解决,还有能改成响四次后能中断返回吗?请帮帮忙!!!!!!!!ORG 0000H ;此程序功能为按一下键,产生外部中断0,使P1.7输出声音
AJMP MIAN
ORG 0003H ;外部中断0入口地址
LJMP 0030H ;按键程序
ORG 000BH ;定时中断0入口地址
LJMP TIME0
ORG 0030H
MIAN:MOV SP,70H
SETB EA ;CPU中断
SETB EX0 ;外部中断0
CLR IT0 ;外部中断0电平触发
MOV R4,#08H ;P0口灯亮次数
MOV A,#11111110B ;初始化数据
DL1:MOV P0,A ;送P0
ACALL DELAY ;延时
RL A ;左移
DJNZ R4,DL1 ;未完继续
AJMP MIAN ;返回主程序
DELAY:MOV R5,#3 ;延时子程序
DL6:MOV R6,#250
DE7:MOV R7,#200
DE5:DJNZ R7,DE5
DJNZ R6,DE7
DJNZ R5,DL6
RET
ORG 0300H ;外部0中断程序
ANJIAN1:PUSH PSW
PUSH ACC
SETB RS1 ;选择2组寄存器
CLR RS0
;这下面的为音乐的发生程序 直到TAB段
MIAN1:MOV TMOD,#01H
MOV IE,#82H
MOV DPTR,#TAB
LOOP:CLR A
MOVC A,@A+DPTR
MOV R1,A
INC DPTR
CLR A
MOVC A,@A+DPTR
MOV R0,A
ORL A,R1
JZ NEXT0
MOV A,R0
ANL A,R1
CJNE A,#0FFH,NEXT
SJMP MIAN1
NEXT:MOV TH0,R1
MOV TL0,R0
SETB TR0
SJMP NEXT1
NEXT0:CLR TR0
NEXT1:CLR A
INC DPTR
MOVC A,@A+DPTR
MOV R2,A
LOOP1:ACALL D200
DJNZ R2,LOOP1
INC DPTR
AJMP LOOP
D200:MOV R3,#81H
D200B:MOV A,#0FFH
D200A:DEC A
JNZ D200A
DEC R3
CJNE R3,#00H,D200B
RET
TAB:DB 0FEH,25H,02H,0FEH,25H,02H
DB 0FEH,25H,04H,0FDH,80H,04H
DB 0FEH,84H,02H,0FEH,84H,02H
DB 0FEH,84H,04H,0FEH,25H,04H
DB 0FEH,25H,02H,0FEH,84H,02H
DB 0FEH,0C0H,04H,0FEH,0C0H,04H
DB 0FEH,98H,02H,0FEH,84H,02H
DB 0FEH,57H,08H,00H,00H,04H
DB 0FFH,0FFH
RET
TIME0:PUSH ACC ;定时器0中断程序
PUSH PSW ;保护现场
MOV TH0,R1 ;重装初值
MOV TL0,R0
CPL P1.7 ;P1.7输出
POP ACC ;恢复现场
POP PSW
RETI
END |