当前位置:首页 >> 信息与通信 >>

usb单片机cs51交通灯程序汇编语言


ORG 0000H A_BIT EQU 20H ;用于存放南北十位数 B_BIT EQU 21H ;用于存放南北十位数 C_BIT EQU 22H ;用于存放东西十位数 D_BIT EQU 23H ; 用于存放东西位数 TEMP1 EQU 24H ;用于存放第一二南北状态要显示的时间 TEMP2 EQU 25H ;用于存放第一二东西状态要显示的时间 TEMP3 EQU 26H ;用于存放第三第四南北状态要显示的时间 TEMP4 EQU 27H;用于存放第三第四南北状态要显示的时间 LJMP MAIN ORG 0003H ;外部中断 0 入口 LJMP INT0 ;跳转到外部 0 中断 ORG 0013H ;外部中断 1 入口 LJMP INT1 ;跳转到外部 1 中断 INT0: MOV A,P1 ;外部 0 中断 PUSH ACC MOV A,P2 ;中断保护 PUSH ACC MOV P1,#0FFH ;清除先前状态 MOV P2,#0FFH CLR P1.0 CLR P1.4 ;南北通行,东西禁止通行 CLR P1.6 CLR P2.3 JNB P3.2 ,$ ;判断是否还在中断状态 POP ACC MOV P2,A ;返回中断前状态 POP ACC MOV P1,ACC RETI ;中断返回 INT1:MOV A,P1 ;外部 1 中断 PUSH ACC ;中断保护 MOV A,P2 PUSH ACC MOV P1,#0FFH ;清除先前状态 MOV P2,#0FFH CLR P1.2 CLR P2.1 CLR P1.3 ;东西通行,南北禁止通行 CLR P1.5 JNB P3.3 ,$ ;判断是否还在中断状态 POP ACC MOV P2,A ;返回中断前状态 POP ACC

MOV P1,A RETI ;中断返回 MAIN: ORG 0100H ;初始情况 MOV P1,#0FFH MOV P2,#0FFH ;灭所有灯 MOV TMOD,#55H ;计数方式方式 1 MOV IE,#85H ;开中断 MOV TEMP1,#20 ; MOV TEMP2,#25 MOV TEMP3,#25 MOV TEMP4,#20 STAR: MOV P1,#0FFH MOV P2,#0FFH ;灭所有灯 MOV A,24H ;将显示时间送 A CJNE A,#20,T40T ;判断时间,选初始值 T20T: ;南北通行要显示的时间为 20 的计数器初始值 CLR TF0 ;清 TF0 CLR TF1 ;清 TF1 MOV TH1 ,#0FFH ;送 20 秒时的初始值 MOV TL1 ,#0FCH ;在些设计 20 秒 6 辆为多车 MOV TH0 ,#0FFH MOV TL0 ,#0FCH LJMP TEMP20 ;跳到 20 秒 T40T: ;南北通行要显示的时间为 40 的计数器初始值 CLR TF0 ;清 TF0 CLR TF1 ;清 TF1 MOV TH1,#0FFH ;送 40 秒时的初始值 MOV TL1 ,#0F8H ;在些设计 40 秒 8 辆为多车 MOV TH0 ,#0FFH MOV TL0 ,#0F8H LJMP TEMP40 ;跳到 40 秒 TEMP20: ;TEMP1=20 情况 SETB TR0 ;开始计数 SETB TR1 CLR P1.2 CLR P2.1 ;南北通行,东西禁止通行 CLR P1.3 CLR P1.5 MOV TEMP1,#20 ;南北要显示的时间, MOV TEMP2,#25 ;东西要显示的时间 STLOP: ACALL DISPLAY1 ;调用显示

DEC TEMP1 ;时间够一秒显示时间减 1 DEC TEMP2 MOV A,TEMP1 CJNE A,#0,NEXT ;若显示时间不为 0 保持现在状态 LJMP STAR2 ;若显示时间为 0 跳到第二状态 NEXT: LJMP STLOP STAR2: ;状态 1 SETB P1.2 CLR P1.1 ;南北黄灯,东西禁止通行 SETB P1.3 CLR P1.4 MOV TEMP1,#05 ;南北要显示的时间, MOV TEMP2,#05 ;东西要显示的时间, STLOP2: ACALL DISPLAY1 ;调用显示 DEC TEMP1 ;时间够一秒显示时间减 1 DEC TEMP2 MOV A,TEMP1 CJNE A,#0,NEXT2 ;若显示时间不为 0 保持现在状态 JB TF1 ,T40 ;判断南北是否多车 JB TF0 ,T40 ;判断北南是否多车 MOV TEMP1,#20 ;少车下次显示时间为 20 秒 LJMP STAR3 ;跳到状态 3 T40: MOV TEMP1,#40 ; 多车下次显示时间为 40 秒 LJMP STAR3 ;若显示时间为 0 跳到第三状态 NEXT2:LJMP STLOP2 TEMP40:;TEM=40 程序 SETB TR0 ; 开始计数 SETB TR1 CLR P1.2 CLR P2.1 ;南北通行,东西禁止通行 CLR P1.3 CLR P1.5 MOV TEMP1,#40 ;南北要显示的时间, MOV TEMP2,#45 ;东西要显示的时间 STLOP11: ACALL DISPLAY1 ;调用显示 DEC TEMP1 ;时间够一秒显示时间减 1 DEC TEMP2 MOV A,TEMP1 CJNE A,#0,NEXT11 ;若显示时间不为 0 保持现在状态 LJMP STAR22 ;若显示时间为 0 跳到第二状态 NEXT11: LJMP STLOP11

STAR22: ;状态 1 SETB P1.2 CLR P1.1 ;南北黄灯,东西禁止通行 SETB P1.3 CLR P1.4 MOV TEMP1,#05 ;南北要显示的时间, MOV TEMP2,#05 ;东西要显示的时间, STLOP22: ACALL DISPLAY1 ;调用显示 DEC TEMP1 ;时间够一秒显示时间减 1 DEC TEMP2 MOV A,TEMP1 CJNE A,#0,NEXT22 ;若显示时间不为 0 保持现在状态 JB TF1 ,T401 ; 判断是否多车 JB TF0 ,T401 MOV TEMP1,#20 ;少车下次显示时间为 20 秒 LJMP STAR3 T401:MOV TEMP1,#40 ;多车下次显示时间为 40 秒 LJMP STAR3 ;若显示时间为 0 跳到第三状态 NEXT22:LJMP STLOP22 STAR3: MOV A,26H CJNE A,#25,T40T1 ;判断时间,选初始值 T20T1: ;南北通行要显示的时间为 20 的计数器初始值 CLR TF0 ; 清溢出位 CLR TF1 MOV TH1 ,#0FFH ; 给初值 MOV TL1 ,#0FCH MOV TH0 ,#0FFH MOV TL0 ,#0FCH LJMP TEMP320 T40T1: ;南北通行要显示的时间为 40 的计数器初始值 CLR TF0 ; CLR TF1 MOV TH1,#0FFH ;给初值 MOV TL1 ,#0F8H MOV TH0 ,#0FFH MOV TL0 ,#0F8H LJMP TEMP340 TEMP320:;状态三 SETB TR1 ;南北停止计数 SETB TR0 ;东西开始计数 SETB P1.1 ;东西通行,南北禁止通行 CLR P1.0

SETB P1.1 CLR P1.0 SETB P1.5 CLR P1.6 SETB P2.1 CLR P2.3 MOV TEMP3,#25 ;南北要显示的时间, MOV TEMP4,#20 ;东西要显示的时间, STLOP33: ACALL DISPLAY ;调用显示 DEC TEMP3 ;时间够一秒显示时间减 1 DEC TEMP4 MOV A,TEMP4 CJNE A,#0,NEXT33 ;若显示时间不为 0 保持现在状态 LJMP STAR34 ;若显示时间为 0 跳到第四状态 NEXT33:LJMP STLOP33 STAR34: ;状态四 SETB P2.3 CLR P2.2 SETB P1.6 ;东西黄灯,南北禁止通行 CLR P1.5 MOV TEMP3,#05 ;南北要显示的时间, MOV TEMP4,#05 ;东西要显示的时间, STLOP34: ACALL DISPLAY ;调用显示 DEC TEMP3 ;时间够一秒显示时间减 1 DEC TEMP4 MOV A,TEMP4 CJNE A,#0,NEXT34 ;若显示时间不为 0 保持现在状态 JB TF1 ,T402 JB TF0 ,T402 MOV TEMP3,#25 LJMP STAR T402: MOV TEMP3,#45 LJMP STAR NEXT34: LJMP STLOP34 TEMP340 : SETB TR1 ;南北停止计数 SETB TR0 ;东西开始计数 SETB P1.1 ;东西通行,南北禁止通行 CLR P1.0 SETB P1.1 CLR P1.0

SETB P1.5 CLR P1.6 SETB P2.1 CLR P2.3 MOV TEMP3,#45 ;南北要显示的时间, MOV TEMP4,#40 ;东西要显示的时间, STLOP43: ACALL DISPLAY ;调用显示 DEC TEMP3 ;时间够一秒显示时间减 1 DEC TEMP4 MOV A,TEMP4 CJNE A,#0,NEXT43 ;若显示时间不为 0 保持现在状态 LJMP STAR44 ;若显示时间为 0 跳到第四状态 NEXT43:LJMP STLOP43 STAR44: ;状态四 SETB P2.3 CLR P2.2 SETB P1.6 ;东西黄灯,南北禁止通行 CLR P1.5 MOV TEMP3,#05 ;南北要显示的时间, MOV TEMP4,#05 ;东西要显示的时间, STLOP44: ACALL DISPLAY ;调用显示 DEC TEMP3 ;时间够一秒显示时间减 1 DEC TEMP4 MOV A,TEMP3 CJNE A,#0,NEXT44 ;若显示时间不为 0 保持现在状态 JB TF1 ,T403 JB TF0 ,T403 MOV TEMP3,#25 LJMP STAR T403: MOV TEMP3,#45 LJMP STAR NEXT44: LJMP STLOP44 ;显示 DISPLAY1: MOV A,TEMP1 ;将南北要显示的数存放到 A MOV B,#10 ;B=10 DIV AB ;A 除以 B 商存 A,余数 B MOV B_BIT,A ; 将 A 放到 20H MOV A_BIT,B ;将 B 放到 21H MOV A,TEMP2 ;将东西要显示的数存放到 A MOV B,#10 ;B=10

DIV AB ;A 除以 B 商存 A,余数 B MOV C_BIT,A ;将 A 放到 22H MOV D_BIT,B ;将 B 放到 23H MOV DPTR ,#NUMT ; MOV R0,#2 ;R0=2 DPL11: MOV R1,#250 ;R1=250 DPLOP1: MOV A,A_BIT ;将南北要显示的 10 位数送 A MOVC A,@A+DPTR ;查表 MOV P0,A ;显示南北 10 位数 CLR P2.7 ACALL D1MS;延时 1MS SETB P2.7 ;灭南北 10 位数 MOV A,B_BIT ;将南北要显示的个位数送 A MOVC A,@A+DPTR ;查表 MOV P0,A ;显示南北个位数 CLR P2.6 ACALL D1MS ;延时 1MS SETB P2.6 ;灭南北个位数 MOV A,C_BIT ;将东西要显示的 10 位数送 A MOVC A,@A+DPTR ;查表 MOV P0,A ;显示东西 10 位数 CLR P2.5 ACALL D1MS ;延时 1MS SETB P2.5 ;灭东西 10 位数 MOV A,D_BIT ;将东西要显示的个位数送 A MOVC A,@A+DPTR ;查表 MOV P0,A ;显示东西东西位数 CLR P2.4 ACALL D1MS ;延时 1MS SETB P2.4 ;灭东西个位数 DJNZ R1,DPLOP ;循环扫描 DJNZ R0,DPL1 RET ;等待 1 秒返回 ;显示 DISPLAY: MOV A,TEMP3 ;将南北要显示的数存放到 A MOV B,#10 ;B=10 DIV AB ;A 除以 B 商存 A,余数 B MOV B_BIT,A ; 将 A 放到 20H MOV A_BIT,B ;将 B 放到 21H MOV A,TEMP4 ;将东西要显示的数存放到 A MOV B,#10 ;B=10 DIV AB ;A 除以 B 商存 A,余数 B

MOV C_BIT,A ;将 A 放到 22H MOV D_BIT,B ;将 B 放到 23H MOV DPTR ,#NUMT ; MOV R0,#2 ;R0=2 DPL1: MOV R1,#250 ;R1=250 DPLOP: MOV A,A_BIT ;将南北要显示的 10 位数送 A MOVC A,@A+DPTR ;查表 MOV P0,A ;显示南北 10 位数 CLR P2.7 ACALL D1MS;延时 1MS SETB P2.7 ;灭南北 10 位数 MOV A,B_BIT ;将南北要显示的个位数送 A MOVC A,@A+DPTR ;查表 MOV P0,A ;显示南北个位数 CLR P2.6 ACALL D1MS ;延时 1MS SETB P2.6 ;灭南北个位数 MOV A,C_BIT ;将东西要显示的 10 位数送 A MOVC A,@A+DPTR ;查表 MOV P0,A ;显示东西 10 位数 CLR P2.5 ACALL D1MS ;延时 1MS SETB P2.5 ;灭东西 10 位数 MOV A,D_BIT ;将东西要显示的个位数送 A MOVC A,@A+DPTR ;查表 MOV P0,A ;显示东西东西位数 CLR P2.4 ACALL D1MS ;延时 1MS SETB P2.4 ;灭东西个位数 DJNZ R1,DPLOP ;循环扫描 DJNZ R0,DPL1 RET ;等待 1 秒返回 D1MS: MOV R7,#250 ;1MS 延时程序 DJNZ R7,$ RET ;1 到 10 对应电路图数码管表 NUMT: DB 7EH,48H,67H,6BH,59H DB 3BH,3FH,68H,7FH,7BH


相关文章:
用51单片机控制交通灯汇编语言编写_图文.doc
51单片机控制交通灯汇编语言编写 - 基于 51 单片机交通灯控制系统设计
基于51单片机汇编语言设计的交通灯毕业论文.doc
基于51单片机汇编语言设计的交通灯毕业论文 - 交通灯的控制 摘要: 本设计以 AT89C51 单片机为主控模块,主要由按钮开关,数码管, 发光二极管组成, 利用汇编语言编写...
51单片机(呼吸灯)汇编语言版.doc
51单片机(呼吸灯)汇编语言版 - 长江工程职业技术学院单片机实训报告 单片机实训课程之:呼吸灯 一.设计要求 二.相关原理 三.论证分析 四.硬件原理 五.软件程序设计...
51单片机数码管倒计时模拟交通灯汇编程序.txt
51单片机数码管倒计时模拟交通灯汇编程序 - /*** ...
交通灯汇编语言课程设计_图文.doc
交通灯汇编语言课程设计 - 课程设计 题目名称课程名称学专班姓学院业级名号 交通灯系统设计 单片机 信息学院 电子信息科学与技术 指导教师 2012 年...
51单片机经典流水灯汇编程序.doc
流水灯数字显示综合练习---51 单片机汇编语言试验教程该程序运行结果为个位数码
51单片机常见汇编程序实验代码.doc
51单片机常见汇编程序实验代码_电子/电路_工程科技_专业资料。1. 将片外 8000H...8255 并口芯片的应用:交通灯控制系统的设计 ORG 0000H AJMP START ORG 0030H ...
单片机交通灯课程设计.doc
使用 USB程序生成 HEX 文件下载到单片机里面然后...5 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 ...程序设计采用的是汇编语言编写,本设计是交通灯,KEY ...
51单片机心形灯汇编程序.doc
51单片机心形灯汇编程序 - ORG MAIN: DAN2: DAN3: DAN
51单片机指令系统及汇编语言程序设计_图文.ppt
51单片机指令系统及汇编语言程序设计 - 第三章 MCS-51单片机指令系 统及汇编语言程序设计 内容提要: §3-1 汇编语言与指令系统简介 §3-2 数据传送类指令 §3...
51单片机汇编程序_图文.ppt
51单片机汇编程序 - MCS-51 单片机原理及设计 第5讲:汇编程序的编写 电气工程系 苏健勇 sujianyong@hit.edu.cn 1 MCS-51 汇编 ...
51单片机汇编语言音乐程序.pdf
51单片机汇编语言音乐程序_电子/电路_工程科技_专业资料。NEXT BIT 1
51单片机常见汇编程序实验代码.doc
51单片机汇编程序实验代码 1. 将片外 8000H-80FFH 单元写入数据 AB ...8255 并口芯片的应用:交通灯控制系统的设计 ORG 0000H AJMP START ORG 0030H ...
51单片机汇编语言程序经典考试题_图文.ppt
51单片机汇编语言程序经典考试题 - 51单片机汇编语言程序设计 内容提要:1、介绍伪指令; 2、汇编语言程序的汇编过程; 3、汇编语言实用程序举例。 先介绍几个概念: ...
51单片机汇编语言实验程序集合.txt
51单片机汇编语言实验程序集合_电子/电路_工程科技_...LOOP5 JMP
51单片机按键控制led左右移动和蜂鸣器汇编程序.doc
电子电路| 蜂鸣器| 汇编程序| 单片机|51单片机按键控制led左右移动和蜂鸣器汇编程序_电子/电路_工程科技_专业资料。51单片机,led左移右移,蜂鸣器控制,汇编程序 ORG...
51单片机指令系统及汇编语言程序设计_图文.ppt
MCS-51单片机指令系 统及汇编语言程序设计内容提要:§3-1 汇编语言与指令
51单片机 汇编语言程序设计_图文.ppt
51单片机 汇编语言程序设计_电子/电路_工程科技_专业资料。汇编语言程序设计伪
51单片机实用程序库(汇编).doc
51单片机实用程序库(汇编)_信息与通信_工程科技_...4.1 流水灯 程序介绍:利用 P1 口通过一定延时轮流...5.2 频率输出公式 介绍:f=1/t s51 使用 12M ...
MCS-51单片机汇编语言程序设计._图文.ppt
第3章 MCS-51单片机汇编语言程序设计 编译器C51 C语言程序 汇编语言 源程序 浮动地址目标程序 绝对地址 目标程序 .BIN HEX 汇编器A51 连接/定位器 L51 ...
更多相关标签: