ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:18.28KB ,
资源ID:3733543      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3733543.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机的汇编交通灯程序.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机的汇编交通灯程序.docx

1、单片机的汇编交通灯程序/* 描述: * AT89S52液晶演示 数据p0,控制p2 * 功能: * 万年历、频率计、密码锁、点阵屏 * 作者: * 哥不在江湖 * 技术支持: * 湖南工学院 * * * * * * * * */;*;系统起始程序区 ORG 0000H START: LJMP MAIN ORG 000BH LJMP TIME ORG 001BH LJMP TIME2;*;系统监控程序区 ORG 0030H MAIN: MOV SP, #80H ;确立堆栈区 MOV PSW, #00H ; MOV TMOD, #01H ;定时器初始化,定时器0以工作方式1工作 CLR F0 ;判

2、断表格首地址标志位 CLR EA MOV R0, #20H ;RAM区首地址 MOV R7, #96 ;RAM区单元个数ML: MOV R0, #00H INC R0 DJNZ R7, MLTSF: MOV DPTR, #DISBH ;系统初始化后提示符“P.”字符代码表首地址 MOV R5, #08H MOV R0, #78HDISPTSF:CLR A MOVC A, A+DPTR MOV R0, A INC R0 INC DPTR DJNZ R5, DISPTSFFUN: ACALL DISP ;调显示子程序显示提示符“P.” ACALL KEY ;调用键扫描程序 JB 20H.0, JT

3、 ;S2键按下,则执行交通灯的程序 JB 20H.1, SZAJ2 ;S3键按下,则执行数字按键的程序 LJMP FUNSZAJ2: LJMP SZAJ;*;交通灯程序入口 JT: MOV IE, #82H ;定时器0初始化 MOV TMOD, #01H ;(1秒钟定时) MOV TH0, #3CH MOV TL0, #0B0H MOV R4, #20 CLR 21H.0 CLR TR1 CLR TR0;*; ONE: MOV R3, #15 ;第一个状态,主绿次红 MOV P3, #0DEH ;灯亮, R3为秒计数;*;TSF1: MOV DPTR, #DISBH MOV R5, #08H

4、MOV R0, #78HDISPTSF1:CLR A ;数码管显示缓存区扫描 MOVC A, A+DPTR MOV R0, A INC R0 INC DPTR DJNZ R5, DISPTSF1 MOV 78H, #05H ;数码管显示缓存区付初值 MOV 79H, #01H ;主绿次红,初值15 SETB TR0 ;开定时;*;HA1: ACALL DISP JNB 21H.0, HUI1 CLR 21H.0 ;15秒倒计时程序 DJNZ 78H, HUIQU1 MOV R6, 79H CJNE R6, #00H, TEN LJMP HUIQU1TEN: ACALL DISP JNB 21H

5、.0, TEN MOV 78H, #09H MOV 79H, #00H DEC R3 CLR 21H.0 LJMP HUIQU1HUI1: LJMP HA1HUIQU1: DJNZ R3, HA1;*; CLR TR0 ;第二个状态,主黄次红;*;TWOTWO: MOV IE, #88H ;定时器1初始化 MOV TMOD, #10H ;(0.5秒定时器) MOV TH1, #3CH MOV TL1, #0B0H MOV R4, #10;*; TWO: MOV R3, #5 ;R3还是秒计数 MOV P3, #0DDH ;灯亮;*;TSF2: MOV DPTR, #DISBH MOV R5,

6、#08H MOV R0, #78H ;数码管显示缓存区扫描DISPTSF2:CLR A MOVC A, A+DPTR MOV R0, A INC R0 INC DPTR DJNZ R5, DISPTSF2 ;数码管显示缓存区付初值 MOV 78H, #05H ;主黄次红,初值05 MOV 79H, #00H ;*; CLR 22H.0 SETB TR1 ;开定时器1 MOV R7, #00HHA2: ACALL DISP JNB 22H.0, HA2 ;执行两次0.5秒定时,则计1秒 INC R7 CLR 22H.0 CJNE R7, #02H, HA2 DEC 78H MOV R7, #00

7、H;*; CJNE R3, #4, HUIQU2 ;当倒计时剩下3秒时,执行主行道黄灯闪烁的程序;*;SHAN21: CLR 22H.0LIANG2: JB 22H.0, SHAN22 MOV P3, #0DFH ;主行道闪烁程序 ACALL DISP LJMP LIANG2SHAN22: CLR 22H.0MIE2: JB 22H.0, SHAN2 MOV P3, #0DDH ACALL DISP LJMP MIE2SHAN2: DEC 78H DEC R3 CJNE R3, #1, SHAN21 LJMP TIAO2 HUIQU2: DJNZ R3, HA2HUI2: LJMP HA2TI

8、AO2: NOP;*; CLR TR1 ;第三个状态,主红次绿 CLR TR0 ;定时器的选择SANSAN: MOV IE, #82H MOV TMOD, #01H MOV TH0, #3CH MOV TL0, #0B0H MOV R4, #20 ;*; SAN: MOV R3, #5 MOV P3, #0F3H;*;TSF3: MOV DPTR, #DISBH MOV R5, #08H MOV R0, #78HDISPTSF3:CLR A MOVC A, A+DPTR MOV R0, A INC R0 INC DPTR DJNZ R5, DISPTSF3 MOV 78H, #05H MOV

9、79H, #00H;*; SETB TR0 ;开定时HA3: ACALL DISP JNB 21H.0, HA3 ;5秒倒计时程序 CLR 21H.0 DEC 78H DJNZ R3, HA3;*; CLR TR0 ;选择定时器1,即0.5秒定时器SISI: MOV IE, #88H MOV TMOD, #10H MOV TH1, #3CH MOV TL1, #0B0H MOV R4, #10 ;*; SI: MOV R3, #5 MOV P3, #0EBHTSF4: MOV DPTR, #DISBH MOV R5, #08H MOV R0, #78HDISPTSF4:CLR A MOVC A

10、, A+DPTR MOV R0, A INC R0 INC DPTR DJNZ R5, DISPTSF4 MOV 78H, #05H MOV 79H, #00H CLR 22H.0 SETB TR1 HA4: ACALL DISP JNB 22H.0, HA4 INC R7 CLR 22H.0 CJNE R7, #02H, HA4 DEC 78H MOV R7, #00H ;*; CJNE R3, #4, HUIQU4 ;*;SHAN41: CLR 22H.0LIANG4: JB 22H.0, SHAN42 MOV P3, #0FBH ACALL DISP LJMP LIANG4SHAN42:

11、 CLR 22H.0MIE4: JB 22H.0, SHAN4 MOV P3, #0EBH ACALL DISP LJMP MIE4SHAN4: DEC 78H DEC R3 CJNE R3, #1, SHAN41 LJMP TIAO4 HUIQU4: DJNZ R3, HA4HUI4: LJMP HA4TIAO4: NOP LJMP JT;*; SZAJ: MOV P3, #0FFH ;数据初始化 MOV 78H, #10H MOV 79H, #10H MOV 7AH, #10H MOV 7BH, #10H MOV 7CH, #10H MOV 7DH, #10H MOV 7EH, #10H

12、MOV 7FH, #10HXS: ACALL DISP ACALL KEY JB 20H.0, KEY00 ;是S2键,转KEY00执行 JB 20H.1, KEY11 ;是S3键,转KEY11执行 JB 20H.2, KEY22 ;是S4键,转KEY22执行 JB 20H.3, KEY33 ;是S5键,转KEY33执行 JB 20H.4, KEY44 ;是S6键,转KEY44执行 JB 20H.5, KEY55 ;是S7键,转KEY55执行 JB 20H.6, KEY66 ;是S8键,转KEY66执行 JB 20H.7, KEY77 ;是S9键,转KEY77执行 LJMP OUTKEY00:

13、 LCALL JIAOHUAN MOV 7FH, #00H LCALL DISP LJMP OUTKEY11: LCALL JIAOHUAN MOV 7FH, #01H LCALL DISP LJMP OUT KEY22: LCALL JIAOHUAN MOV 7FH, #02H LCALL DISP LJMP OUTKEY33: LCALL JIAOHUAN MOV 7FH, #03H LCALL DISP LJMP OUTKEY44: LCALL JIAOHUAN MOV 7FH, #04H LCALL DISP LJMP OUTKEY55: LCALL JIAOHUAN MOV 7FH,

14、 #05H LCALL DISP LJMP OUTKEY66: LCALL JIAOHUAN MOV 7FH, #06H LCALL DISP LJMP OUTKEY77: LCALL JIAOHUAN MOV 7FH, #07H LCALL DISP OUT: LJMP XSTIME: MOV TH0, #3CH MOV TL0, #0B0H DEC R4 CJNE R4, #0, ZHUAN SETB 21H.0 MOV R4, #20 ZHUAN: RETITIME2: MOV TH1, #3CH MOV TL1, #0B0H DEC R4 CJNE R4, #0, ZHUAN2 SET

15、B 22H.0 MOV R4, #10 ZHUAN2: RETIDISBH: DB 11H,10H,10H,10H,10H,10H,10H,10H,10H ;提示符“P.”字符序号;显示字符段选码表(共阳极代码)TAB: DB 0C0H, 0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H ;0-8 DB 90H, 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH ;9,A,B,C,D,E,F,灭,p.;*;键扫描子程序KEY: LCALL KEYCHULI ;调P1口数据处理子程序 JZ EXIT ;没有键按下,转返回 LCALL DISP ;调显示子

16、程序去抖动 LCALL DISP LCALL KEYCHULI ;调P1口数据处理子程序 JZ EXIT ;没有键按下,转返回 MOV B, 20H ;保存取反后的键值KEYSF: LCALL KEYCHULI ;调P1口数据处理子程序 JZ KEY1 ;键释放,则将键值转移并保存 LCALL DISP ;调显示子程序延时 LJMP KEYSF ;等待释放KEY1: MOV 20H, B ;键值送20H保存EXIT: RET ;子程序返回;P1口按键数据处理子程序KEYCHULI: PUSH PSW ;保护现场 CLR RS1 ;改变当前寄存器组为组1 SETB RS0 MOV P1, #0F

17、FH ;先向P1口写1 MOV A, P1 ;读P1口数据 CPL A ;P1口数据取反 MOV 20H, A ;保存取反后的键值 CLR RS1 ;恢复当前寄存器组为组0 CLR RS0 POP PSW ;恢复现场 RET ;子程序返回;数码管显示子程序DISP;入口:7FH,7EH,7DH,7CH,7BH,7AH,79H,78H (LED7,LED6,LED5,LED4,LED3,LED2,LED1,LED0) DISP: PUSH DPH PUSH DPL PUSH ACC PUSH PSW CLR RS1 ;改变当前寄存器组为组1 SETB RS0 MOV R1, #78H ;显示缓冲

18、存储单元首地址 MOV R2, #0FEH ;从右至左显示 MOV R5, #08H ;循环次数,即驱动数码管的位数 DISP1: MOV A, R1 MOV DPTR, #TAB MOVC A, A+DPTR MOV P0, A ;送段控 MOV P2, R2 ;送位控 LCALL DL MOV A, R2 ;延时1毫秒 RL A ;获得新的位控码 MOV R2, A ;保存新的位控码 INC R1 ;获得新的显示缓冲单元地址 DJNZ R5, DISP1 ;循环没有结束则继续 DISP2: POP PSW ;恢复当前寄存器组的组号 POP ACC POP DPL POP DPH RET;延时1ms子程序(晶振频率12MHz)DL DL: MOV R7, #02H DL1: MOV R6, #0FFH DL2: DJNZ R6, DL2 DJNZ R7, DL1 RET ;将78至7EH单元的内容交换子程序JIAOHUAN: MOV 78H, 79H MOV 79H, 7AH MOV 7AH, 7BH MOV 7BH, 7CH MOV 7CH, 7DH MOV 7DH, 7EH MOV 7EH, 7FH RET END

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1