51单片机 汇编语言的问题

一般情况下正常显示,东西-南北交替放行,各方向通行时间为30秒。有救护车或警车到达时,两个方向交通信号灯全为红色,以便让急救车或警车通过,设通行时间为10秒,之后交通恢复... 一般情况下正常显示,东西-南北交替放行,各方向通行时间为30秒。有救护车或警车到达时,两个方向交通信号灯全为红色,以便让急救车或警车通过,设通行时间为10秒,之后交通恢复正常。用单次脉冲模拟急救车或警车申请外部中断。我的程序在第一次执行完中断之后会返回0000H处,不知道为什么,求指点 ORG 0000H AJMP MAIN ORG 0003H LJMP RED_INT ORG 0100HMAIN: SETB IT0 SETB EA SETB EX0 MOV A,#00HDELAY30: ;先亮27秒绿灯,再亮3秒黄灯 MOV R5,A MOV R3,#3 ;红绿灯十位 MOV R4,#0 ;红绿灯个位LP22: MOV DPTR,#LIGHT MOV A,R5 MOVC A,@A+DPTR MOV P1,ALP20: MOV DPTR,#TAB MOV A,R4 MOVC A,@A+DPTR MOV P0,A MOV A,R3 MOVC A,@A+DPTR MOV P2,A LCALL DELAY1 DEC R4 CJNE R4,#0FFH,LP21 MOV R4,#9 DEC R3 CJNE R3,#0FFH,LP20 INC R5 MOV A,R5 CJNE A,#4,DELAY30 MOV A,#00H LJMP DELAY30LP21: CJNE R4,#3,LP20 CJNE R3,#0,LP20 INC R5 LJMP LP22DELAY1: ;1S延时子程序 MOV R0,#10 MOV TMOD,#01HLP10: MOV TH0,#03CH MOV TL0,#0B0H SETB TR0LP12: JBC TF0,LP11 AJMP LP12LP11: DJNZ R0,LP10 CLR TR0 RETRED_INT: ;中断子程序 MOV SP,#60H PUSH PSW PUSH ACC PUSH 03H PUSH 04H PUSH 05H PUSH DPL PUSH DPH MOV 06H,P0 PUSH 06H MOV 06H,P1 PUSH 06H MOV 06H,P2 PUSH 06H CLR IE0 MOV A,#09H MOV P1,A MOV R3,#1 MOV R4,#0LPI1: MOV DPTR,#TAB MOV A,R4 MOVC A,@A+DPTR MOV P0,A MOV A,R3 MOVC A,@A+DPTR MOV P2,A LCALL DELAY1 DEC R4 CJNE R4,#0FFH,LPI1 MOV R4,#9 DEC R3 CJNE R3,#0FFH,LPI1 POP 06H MOV P2,06H POP 06H MOV P1,06H POP 06H MOV P0,06H POP DPH POP DPL POP 05H POP 04H POP 03H POP ACC POP PSW RETI TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH LIGHT: DB 11H,21H,0AH,0CH ;南北绿东西红,南北黄东西红,东西绿南北红,东西黄南北红END 展开
 我来答
意法半导体(中国)投资有限公司 2023-06-12
展开全部
MAIN: MOV SP,#50H MOV DPTR,#TAB;读入字模指针 MOV 30H,DPL; 存起来 ;堆栈低8位 MOV 31H,DPH ;堆栈高8位 MOV 32H,30H;再记录指针,留作移动了多少位的判断 用。 MOV 3H,31H ;3H记录字模数据的高位地址 INC 3H;3H高位地址+5,表示数据有5X256列之多。 ROL: MOV R2,#01H;设扫描次数 INI1: MOV DPL,30H;这段是扫描一次32列 MOV DPH,31H MOV R4,#32 MOV R3,#0 LOP1 P1,R3 CLR A MOVC A,@A+DPTR MOV P0,A INC DPTR CLR A MOVC A,@A+DPTR MOV P2,A INC DPTR CAL DELAY INC R3 DJNZ R4,LOP1 DJNZ R2,INI1;这条预留扫描次数用可以调整速度 MOV DPL,3…
做而论道
高能答主

2016-05-14 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.1亿
展开全部
RED_INT: ;中断子程序
MOV SP,#60H----!!!
PUSH PSW
PUSH ACC
... ...

你在中断程序中,修改了堆栈指针?
返回的地址,就被破坏了。
------------------
MOV SP,#60H--应该放在主程序
以后,任何时候,都不要更改 SP。
追问
谢谢   我按您的说法把SP放在主程序中之后,仿真时中断结束之后就卡在那不动了,LED显示不正常是为什么
意法半导体(中国)投资有限公司
2023-06-12 广告
单片机是一种集成电路芯片。又称单片微控制器,是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。一块芯片就成了一台计算机。特点是体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。 单... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式