当前位置:首页 > 城市交通灯控制系统毕业论文
青岛理工大学琴岛学院专科毕业设计说明书(论文)
附 录
程序实现代码
;此程序分为四个部分,循环运行。东西方向通行20S(南北方向、东西南北左拐弯停)一部分SETB P1.0;
;东西左拐弯20S(东西南北方向、南北左拐弯停)一部分SETB P1.1; ;南北通行20S(东西方向、东西南北左拐弯停)一部分11111; ;南北左转弯20S(东西南北方向、东西左拐弯停)一部分SETB P1.3。 ;共设计12个发光二极管,4个红的,8个绿的。 ;P1.0控制东西方向的2个红灯和2个绿灯; ;P1.2控制南北方向的2个红灯和2个绿灯; ;P1.1和P1.3控制东西南北左拐弯的4个绿灯。
FLAG1 BIT 00H FLAG2 BIT 01H FLAG3 BIT 02H ORG 0000H LJMP START ORG 001BH LJMP DSD ORG 0030H
;定时器1的选择 ;给定时器预置数 ;打开总中断
;定时器1溢出中断允许 ;启动定时器 ;标记位清0
MOV TH1, #3CH MOV TL1, #0B0H SETB EA
SETB ET1 SETB TR1 CLR FLAG1 CLR FLAG2 CLR FLAG3 MOV R3, #00H MOV R2, #00H SETB P1.0 CLR P1.1 CLR P1.2
- 22 -
;标记00H位
;程序执行起始处 ;跳转到标号START执行 ;定时器1中断程序入口地址
START: MOV TMOD, #10H
;1秒定时器的初值 ;P1口清0 ;给R2初值 ;给P1.0口置1 ;给P1.0口置0
FIR: MOV P1, #00H
青岛理工大学琴岛学院专科毕业设计说明书(论文)
CLR P1.3 MOV R0, #20 MOV R1, #40
;F0为1财转移到SGL1 ;把R0的值送入A中
MOV A, R0
;给R0赋初值
SGL: JB F0, SGL1
LCALL DY1 ;调用DY1
MOV A, R1 LCALL DY1 MOV A, R0 LCALL DY1 MOV A, R1 LCALL DY1 LCALL DELAY SJMP DIAOY
SGL1: MOV A, R1
LCALL DY1 MOV A, R0 LCALL DY1 MOV A, R1 LCALL DY1 MOV A, R0 LCALL DY1
LCALL DELAY
DIAOY:
CJNE R2, #01H, AA
JB FLAG1, AA
LJMP SEC AA: CJNE R2, #02H, AAA
JB FLAG2, AAA SETB F0 LJMP THR AAA: CJNE R2, #03H, BB
JB FLAG3, BB
LJMP FOU
BB: CJNE R2, #04H, BBB
;调用DELAY延时子程序 ;跳转到DIAOY循环控制子程序
;循环控制子程序 ;判断不相等刚跳转 ;FLAG1为1则跳转
;跳转到SEC ;判断不相等则跳转
- 23 -
青岛理工大学琴岛学院专科毕业设计说明书(论文)
CLR FLAG3 LJMP FIR
BBB: CJNE R0, #00H, SGL
INC R2
;R2加1
LJMP DIAOY
;控制东西左转的绿灯亮 SEC: CLR P1.0 SETB P1.1 CLR P1.2 CLR P1.3 MOV R0, #20 MOV R1, #20 SETB FLAG1
LJMP SGL
;控制南北红、绿灯亮 THR: CLR P1.0 CLR P1.1 SETB P1.2 CLR P1.3 MOV R1,#40 MOV R0, #20 SETB FLAG2
LJMP SGL
控制南北左转的绿亮 FOU: CLR P1.0 CLR P1.1 CLR P1.2 SETB P1.3 MOV R1, #20 MOV R0, #20 SETB FLAG3
LJMP SGL
;显示数字处理子程序(算法模块) DY1:
- 24 -
青岛理工大学琴岛学院专科毕业设计说明书(论文)
MOV B, #10
;把#10送到专用寄存器B
;把TAB的地址的指针送到DPTR ;指针相加后单元内容送到寄存器A中 ;调用发送子程序 ;把除法的余数送到A中
DIV AB ;进行除法运算 MOV DPTR, #TAB LCALL DY
MOVC A,@A+DPTR MOV A, B
MOV DPTR, #TAB
MOVC A,@A+DPTR LCALL DY
RET
;把A中的数送到缓冲区 ;给R7置数 ;循环跳转
;延时发送程序 DY: MOV SBUF, A
DJNZ R7, $ RET
MOV R7, #0FH
;延时子程序 DELAY:
MOV R4, #00H D1: MOV R5, #00H
DJNZ R5, $ DJNZ R4, D1 RET
;中断子程序 DSD: INC R3
MOV TH1, #3CH MOV TL1, #0B0H CJNE R3, #20, FH DEC R0 DEC R1
MOV R3, #00H
;R3清0 ;中断返回 ;判断是否够 1秒
FH: RETI
TAB: DB 0fch, 60h, 0dah, 0f2h, 66h, 0b6h, 0beh
DB 0e0h, 0feh, 0f6h END
- 25 -
共分享92篇相关文档