云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 基于单片机的交通灯的设计报告(程序为汇编语言) - 图文

基于单片机的交通灯的设计报告(程序为汇编语言) - 图文

  • 62 次阅读
  • 3 次下载
  • 2025/12/11 16:43:25

秒的时间,另一种是采用软延时的方法。 5.2、1秒的方法

我们采用在主程序中设定一个初值为20的软件计数器和使T0定时50毫秒.这样每当T0到50毫秒时CPU就响应它的溢出中断请求,进入他的中断服务子程序。在中断服务子程序中,CPU先使软件计数器减1,然后判断它是否为零。为零表示1秒已到可以返回到输出时间显示程序. 5.3、相应程序代码 (1)主程序

定时器需定时10毫秒,故T0工作于方式1。 初值: T0初值=216-fose/12Xt=216-(12X106X0.01)/12=55536D=D8F0H ORG 0000H

MAIN: MOV TMOD,#01H MOV TL0,#0F0H MOV TH0,#0D8H

SETB EA SETB ET0

SETB TR0

SETB EX0 SETB EX1 SETB IT0 CLR IT1 SETB PT0 (2)中断服务子程序

ORG 000BH

ZHD2: MOV TL0,#0F0H ;重先赋值 MOV TH0,#0D8H CLR P3.4 RETI 5.4、键盘显示流程图

主程序 “加”键按下 键盘“设置”按下 “加”数字显示程序 “减”数字显示程序 “减”键按下 主程序 程序设 置

5.5、 软件延时

MCS-51的工作频率为2-12MHZ,我们选用的AT89C51单片机的工作频率为12MHZ。机器周期与主频有关,机器周期是主频的12倍,所以一个机器周期的时间为12*(1/12M)=1us。我们可以知道具体每条指令的周期数,这样我们就可

5

以通过指令的执行条数来确定1秒的时间。 具体的延时程序分析:

DEL: MOV R7,#40 ; ;延时10ms DEL1: MOV R6,#123

NOP

DEL2: DJNZ R6,DEL2

DJNZ R7,DEL1 RET 5.6、软件流程图:见附录Ⅱ 5.7、源程序代码

ORG 0000H ;伪指令、程序开始、中断入口地址

LJMP MAIN ORG 0003H LJMP ZHD1 ORG 000BH LJMP ZHD2 ORG 0013H LJMP ZHD3 ORG 1000H ;主程序

MAIN:MOV TMOD,#01H ;设工作方式

MOV TL0,#0F0H ;设初值 ,单片机晶振12M,定时10MS MOV TH0,#0D8H

SETB EA ;开放总中断 SETB ET0 ;开放T0中断 SETB TR0 ;启动T0定时 SETB EX0 ;开放外中断0 SETB EX1 ;开放外中断1

SETB IT0 ;设外中断0为边沿触发 CLR IT1 ;设外中断1为低电平有效 SETB PT0

CYCLE:MOV R0,#60 ;AB方向绿灯显示时间 MOV R1,#65 ;CD方向红灯显示时间 MOV R2,#25 ;为延时1秒而用 ;CD红灯 AB绿灯 LOOP1:SETB P3.4 MOV P1,#01H

SETB P1.7 ;点亮红灯 SETB P1.4 ;点亮绿灯

LCALL DISPLAY ;调用显示程序 DJNZ R2,LOOP1 MOV R2,#25 DEC R1

DJNZ R0,LOOP1

6

MOV R0,#3 ;AB方向黄灯显示时间 ;CD红灯 AB黄灯 LOOP2:MOV P1,#01H

SETB P1.7 ;点亮红灯 SETB P1.3 ;点亮黄灯

LLJ: LCALL DISPLAY ;调用显示程序 CPL P1.3 DJNZ R2,LLJ DEC R1

MOV R2,#25 DJNZ R0,LOOP2

MOV R0,#40 ;CD红灯 AB红灯 LOOP3:MOV P1,#01H

SETB P1.7 SETB P1.2 LCALL DISPLAY DJNZ R2,LOOP3 MOV R2,#25 DEC R0

DJNZ R1,LOOP3

MOV R1,#35 ;CD绿灯 AB红灯 LOOP4:MOV P1,#01H

SETB P1.5 SETB P1.2 LCALL DISPLAY DJNZ R2,LOOP4 MOV R2,#25 DEC R0

DJNZ R1,LOOP4

MOV R1,#3 ;CD黄灯 AB红灯 LOOP5:MOV P1,#01H

SETB P1.6 SETB P1.2 LLJ1: LCALL DISPLAY CPL P1.6

DJNZ R2,LLJ1 MOV R2,#25 DEC R0

DJNZ R1,LOOP5 LJMP CYCLE ;键盘中断程序

;AB方向红灯显示时间 点亮红灯 点亮红灯

;调用显示程序 ;CD方向绿灯显示时间 ;点亮绿灯 ;点亮红灯

;调用显示程序 ;CD方向黄灯显示时间 ;点亮黄灯 ;点亮红灯

;调用显示程序 7

; ;

ZHD1: LCALL DISPLAY JB P3.6,Q2 INC R1 INC R0

CJNE R1,#99,TIAO2 MOV R1,#00H

TIAO2:CJNE R0,#99,TIAO3 MOV R0,#00H

TIAO3:LCALL DISPLAY LCALL DISPLAY LCALL DISPLAY LCALL DISPLAY LCALL DISPLAY LCALL DISPLAY JNB P1.0,Z2 Q2: JB P3.7,WAIT1 DEC R1 DEC R0

CJNE R1,#00H,TIAO MOV R1,#99

TIAO: CJNE R0,#00H,TIAO1 MOV R0,#99

TIAO1:LCALL DISPLAY LCALL DISPLAY LCALL DISPLAY LCALL DISPLAY LCALL DISPLAY LCALL DISPLAY WAIT1:JNB P1.0,Z2 WAIT: LJMP ZHD1 Z2: RETI ;时间中断程序

ZHD2: MOV TL0,#0F0H ;重先赋值 MOV TH0,#0D8H CLR P3.4 RETI

;应急通道中断程序 ZHD3:MOV P1,#85H

MOV P0,#30H MOV P2,#30H JNB P3.3,ZHD3 RETI ;数显显示

DISPLAY:MOV A,R0 ;AB方向时间的显示

8

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

秒的时间,另一种是采用软延时的方法。 5.2、1秒的方法 我们采用在主程序中设定一个初值为20的软件计数器和使T0定时50毫秒.这样每当T0到50毫秒时CPU就响应它的溢出中断请求,进入他的中断服务子程序。在中断服务子程序中,CPU先使软件计数器减1,然后判断它是否为零。为零表示1秒已到可以返回到输出时间显示程序. 5.3、相应程序代码 (1)主程序 定时器需定时10毫秒,故T0工作于方式1。 初值: T0初值=216-fose/12Xt=216-(12X106X0.01)/12=55536D=D8F0H ORG 0000H MAIN: MOV TMOD,#01H MOV TL0,#0F0H

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com