|
|
如题,本人将要交毕业论文了。
但是关于单片机的汇编的一个简单的“红绿灯”程序,老师帮我修改了一些,但他故意留下一点瑕疵,他说剩下的要我自己修改。
唉,我选择单片机做毕业论文,就是没得选,被迫选的。
我都不是学单片机的,怎么做得出来啊?
所以,想问一下,哪位仁兄有空的话,能帮帮忙吗?
1、程序我已经有了,而且能够运行。
2、只需要修改的就是红绿灯的闪动问题(对于会单片机的朋友来说,应该很容易吧)。
3、电路图也有了。
如果哪位仁兄能够帮忙,就请加我QQ287738065吧,我会把源程序给你,不胜感激啊。
这两天就要交初稿了,请帮帮忙吧。
1、车道亮绿灯,人道亮红灯
(共延时30 s)
2、车道闪黄灯,人道亮绿灯-----与事实不符,会有意外。
(共延时5 s)
3、车道亮红灯,人道亮绿灯
(共延时30 s)
4、车道亮绿灯,人道闪黄灯
(共延时5 s)----跳会1。
所以,请大家帮忙修改一个与事实相符的程序,再次跪谢啊啊啊啊啊啊。
程序如下:
S0 EQU 0C0H ;0的字段码
S1 EQU 0F9H ;1的字段码
S2 EQU 0A4H ;2的字段码
S3 EQU 0B0H ;3的字段码
S4 EQU 99H ;4的字段码
S5 EQU 92H ;5的字段码
S6 EQU 82H ;6的字段码
S7 EQU 0F8H ;7的字段码
S8 EQU 80H ;8的字段码
S9 EQU 90H ;9的字段码
ORG 0000H
LJMP MAIN1
ORG 0030H ;主程序
MAIN1: MOV P2,#0F3H ;状态1(车道绿灯,人道红灯)
MOV P3,#0F3H
LCALL DELAY30 ;调用延时30秒子程序
MAIN2: MOV P2,#0EEH ;状态2(车道黄灯闪5s,人道绿灯,) {此处与现实不符,容易出现交通事故。}。
MOV P3,#0EEH
LCALL DELAY1
MOV P2,#0FEH ;黄灯灭0.5s
MOV P3,#0FEH
LCALL DELAY1
MOV P2,#0EEH ;黄灯亮0.5s
MOV P3,#0EEH
LCALL DELAY1
MOV P2,#0FEH ;黄灯灭0.5s
MOV P3,#0FEH
LCALL DELAY1
MOV P2,#0EEH ;黄灯亮0.5s
MOV P3,#0EEH
LCALL DELAY1
MOV P2,#0FEH ;黄灯灭0.5s
MOV P3,#0FEH
LCALL DELAY1
MOV P2,#0EEH ;黄灯亮0.5s
MOV P3,#0EEH
LCALL DELAY1
MOV P2,#0FEH ;黄灯灭0.5s
MOV P3,#0FEH
LCALL DELAY1
MOV P2,#0EEH ;黄灯亮0.5s
MOV P3,#0EEH
LCALL DELAY1 ;状态2共延时5s
MAIN3: MOV P2,#0DEH ;状态3(车道红灯,人道绿灯)
MOV P3,#0DEH
LCALL DELAY30
MAIN4: MOV P2,#0F5H ;状态4(车道绿灯,人道黄灯闪5s)
MOV P3,#0F5H
LCALL DELAY1
MOV P2,#0F7H
MOV P3,#0F7H
LCALL DELAY1
MOV P2,#0F5H
MOV P3,#0F5H
LCALL DELAY1
MOV P2,#0F7H
MOV P3,#0F7H
LCALL DELAY1
MOV P2,#0F5H
MOV P3,#0F5H
LCALL DELAY1
MOV P2,#0F7H
MOV P3,#0F7H
LCALL DELAY1
MOV P2,#0F5H
MOV P3,#0F5H
LCALL DELAY1
MOV P2,#0F7H
MOV P3,#0F7H
LCALL DELAY1
MOV P2,#0F5H
MOV P3,#0F5H
LCALL DELAY1 ;状态4共延时5s
AJMP MAIN1 ;返回主程序
;ORG 0F00H ;延时子程序
DELAY30:MOV P0,#S0 ;延时30秒子程序,30秒倒计时
MOV P1,#S3 ;显示30
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
MOV P0,#S9 ;显示29
MOV P1,#S2
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
MOV P0,#S8 ;显示28
MOV P1,#S2
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
MOV P0,#S7 ;显示27
MOV P1,#S2
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
MOV P0,#S6 ;显示26
MOV P1,#S2
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
MOV P0,#S5 ;显示25
MOV P1,#S2
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
MOV P0,#S4 ;显示24
MOV P1,#S2
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
MOV P0,#S3 ;显示23
MOV P1,#S2
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
MOV P0,#S2 ;显示22
MOV P1,#S2
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
MOV P0,#S1 ;显示21
MOV P1,#S2
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
MOV P0,#S0 ;显示20
MOV P1,#S2
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
MOV P0,#S9 ;显示19
MOV P1,#S1
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
MOV P0,#S8 ;显示18
MOV P1,#S1
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
MOV P0,#S7 ;显示17
MOV P1,#S1
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
MOV P0,#S6 ;显示16
MOV P1,#S1
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
MOV P0,#S5 ;显示15
MOV P1,#S1
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
MOV P0,#S4 ;显示14
MOV P1,#S1
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
MOV P0,#S3 ;显示13
MOV P1,#S1
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
MOV P0,#S2 ;显示12
MOV P1,#S1
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
MOV P0,#S1 ;显示11
MOV P1,#S1
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
MOV P0,#S0 ;显示10
MOV P1,#S1
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
MOV P0,#S9 ;显示9
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
MOV P0,#S8 ;显示8
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
MOV P0,#S7 ;显示7
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
MOV P0,#S6 ;显示6
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
MOV P0,#S5 ;显示5
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
MOV P0,#S4 ;显示4
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
MOV P0,#S3 ;显示3
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
MOV P0,#S2 ;显示2
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
MOV P0,#S1 ;显示1
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
RET
DELAY: LCALL DELAY1 ;延时1秒子程序
LCALL DELAY1
RET
DELAY1:MOV 22H,#05H ;延时0.5秒子程序
L3: MOV 23H,#64H ;64H=100
L2: MOV 24H,#0C8H ;C8H=200
L1: NOP ;1个机器周期
NOP
NOP
DJNZ 24H,L1 ;2个机器周期
DJNZ 23H,L2
DJNZ 22H,L3
RET ;2个机器周期
END
特别鸣谢:32楼的littleboy帮忙下,搞了个用C语言编写的程序,运行成功。
但可惜是C语言的,不知道老师放不放行。
所以,还在期待着汇编的程序出来,谢谢了。
期待ING啊。
用的是ATMEL AT89S52 24PI.0423的仪器,调试用的软件是KEIL的UV2.exe。
如果哪位仁兄有汇编的程序,麻烦联系本人QQ或者发到邮箱longhaohong@163.com
[ 本帖最后由 左手戒烟 于 2007-5-22 14:39 编辑 ] |
|