已解决 ORG 0000H LJMP START ORG 0003H LJMP KEY ORG 000BH LJMP T0_INT //---------------------------------- //主程序: ORG 0030H START: MOV IE,#83H ;CPU开中断,T0开中断,外部中断0打开 CLR IT0 ;设置电平触发 MOV R0,#00H ;个位数字 MOV R1,#00H ;十位数字 MOV R2,#00H ;判断是否溢出标志 MOV B,#00H MOV P0,#0C0H ;初始 MOV P2,#03H MOV TMOD,#02H ;T0方式2 MOV TH0,#6 ;计时器赋值 MOV TL0,#6 MOV R5,#39 ;设置循环次数 MOV R6,#100 MOV R7,#00H ;按键次数 MOV DPTR,#TAB_LED ;指针指向段码 CJNE R7,#01H,$ ;等待键盘 RUN: SETB TR0 ;启动T0 LOOP: MOV A,R0 ;显示个位 MOVC A,@A+DPTR ; MOV P2,#02H ; MOV P0,A ;送段码显示 LCALL DELAY_10MS ;动态延时10ms MOV A,R1 ;送十位 MOVC A,@A+DPTR ;显示十位 MOV P2,#01H ; MOV P0,A ;送段码显示 LCALL DELAY_10MS ;动态延时10ms CJNE R2,#00H,OVER ;判断是否溢出 MOV A,B CJNE A,#00H,START NEXT: LJMP LOOP ;循环 OVER: MOV P2,#00H ;关断 LJMP $ //---------------------------------- //共阳极段码表: TAB_LED: DB 0C0H,0F9H,0A4H,0B0H,99H DB 92H,82H,0F8H,80H,90H //---------------------------------- //T0中断: T0_INT: DJNZ R5,INT_END MOV R5,#39 DJNZ R6,T0_INT MOV R6,#100 INC R0 ; CJNE R0,#10,INT_END ;判断个位是否满10 CLEAN1: MOV R0,#00H ;个位归零 CLEAN2: INC R1 ;十位进一 CJNE R1,#10,INT_END ;判断十位是否满10 MOV R1,#00H ;十位归零 MOV R2,#01H ;标志位置1 INT_END: RETI //---------------------------------- //键盘输入: KEY: JNB P3.2,$ INC R7 ;R7加一 CJNE R7,#02H,CLEAN_R7 CLR TR0 LJMP KEY_END CLEAN_R7: CJNE R7,#03H,KEY_END MOV B,#01H KEY_END: RETI //---------------------------------- //延时10ms: DELAY_10MS: MOV R3,#20 L1: MOV R4,#250 DJNZ R4,$ DJNZ R3,L1 RET END |
大佬们救救我呀!! |
问题关键大家都在用C敲代码,你整个汇编的代码上来有多少人能看的懂,有几个玩汇编的又在线? |
我这边只有c语音程序,汇编语言的没有,想要的话回复我,给你 |
我这边只有c语音程序资料 |
R7我在SETB TR0那里设置中断,显示是1,但是如果再在下边一行设置直接就跑飞了,R7=71H |
求助大佬们啦,谢谢! |