




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、交通灯模拟控制器 本程序由西南科技大学信息工程学院通信08级 电子测试实验室 李同学提供,包含全部操作过程 源代码解释说明 一、设计要求利用PC机键盘和屏幕实现交通灯模拟器。二、设计内容与要求基本要求:1、完成一个十字路口的红绿灯正常状态的控制:实现日常生活中正常的交通路口的控制功能,实现南北、东西方向的切换。2、显示时间,精确到秒;灯亮时间长短可变。3、具有自动和手动控制功能。提高要求:1、完成夜间状态的控制:由于夜间车辆和行人很少,实现南北、东西方向的黄灯闪烁,进入夜间控制状态。2、完成紧急状态的控制:南北双方向都设置为红灯,利于执行紧急公务。3、完成交通堵塞状态的控制:由于交通事故等原因
2、出现南北或东西某一方向堵塞,可人为地调整每个方向的红灯时间,进入手动控制状态。附加要求:必要的辅助功能(设置、修改等)。三、编程提示要求用汇编语言进行编程,下面是编写过程中主要涉及的知识点(其中举例只是实现方法之一,同学可根据自己对知识的掌握情况进行设计并调试):1、视频显示程序设计:一般由DOS 或BIOS调用来完成。有关显示输出的DOS功能调用不多,而BIOS调用的功能很强,主要包括设置显示方式、光标大小和位置、设置调色板号、显示字符、显示图形等。用INT 10H即可建立某种显示方式。用DOS功能调用显示技术,把系统功能调用号送至AH,把程序段规定的入口参数,送至指定的寄存器,然后由中断指
3、令 INT 21H来实现调用,例:要输出多于一个字符时,利用DOS功能调用9。2、键盘扫描程序设计:检测键盘状态,有无输入,并检测输入各值。例:利用DOS系统功能调用的01号功能,接受从键盘输入的字符到AL寄存器。3、定时器中断处理程序:在此中断处理程序中,计数器中断的次数记录在计数单元count中,由于定时中断的引发速率是每秒18.2次,即计数一次为55ms,当count计数值为18时,sec计数单元加一(为1秒)。例:在系统定时中断处理程序中,有一条中断指令INT 1CH指令,在ROM BIOS中,1CH的处理仅一条IRET指令,实际上它并没有做任何工作而只是为用户提供了一个软中断类型号,
4、所以INT 1CH指令每秒也将执行18.2次,设计中可用这个定时周期性工作的处理程序来代替原有的1CH程序,实现定时。4、显示时间子程序:将计时单元的二进制转换为十进制数加以显示。参考资料:1微型计算机接口技术及应用2汇编语言程序设计3微型计算机汇编语言程序设计一、教科书中关于IBM-PC/XT机系统硬件的内容,包括8250(串行口控制器),8253,8255,8259等。二、DOS系统功能调用。INT21H1、 显示显示单个字符入参:AH=02HDL=字符ASCII值出参:无显示字符串入参:AH=09HDS:DX 此寄存器对指向内存中字符串的首地址,字符串以$结束出参:无2、 键盘检查键盘状
5、态入参:AH=0BH出参:AL=00H无输入 0FFH有一字符读键盘字符入参:AH=08H出参:AL=字符ASCII值3、 其它退出程序,返回系统入参:AH=4CH出参:无取中断矢量入参:AH=35HAL=中断类型号出参:ES:BX 中断矢量,ES为段地址,BX为偏移地址置中断矢量入参:AH=25HAL=中断类型号DS:DX 中断矢量,DS为段地址,DX为偏移地址出参:AL=字符ASCII值三、BIOS屏幕功能调用。INT10H1、清屏操作MOV AX,0600HMOV CX,0000HMOV DX,184FHMOV BH,07HINT 10H2、移动光标MOV AH,02HMOV DH,*
6、;*为目的地行数(0-24)MOV DL,* ;*为目的地列数(0-79)MOV BH,00HINT 10H3、禁止光标显示MOV AH,01HMOV CX,2000HINT 10H4、恢复光标显示MOV AH,01HMOV CX,0C0DHINT 10H本程序由西南科技大学信息工程学院通信08级 电子测试实验室 李同学提供,包含全部操作过程 源代码解释说明 stack segmentstack dw64 dup(?)stackends showlinemacroSTR,STA,LEN,POS,COL ;显示字符串宏 pushDX pushBX pushAX mov BP,OFFSET STR
7、 ;显示起始位置 add BP,STA ;第几个开始 mov DX,POS ;位置 mov CX,LEN ;长度 mov BX,COL ;颜色 mov AX,1301H ;字符串显示中断 int 10H pop AX pop BX pop DXendm delay macro ;延时一秒 local dloop pushax pushbx pushdx mov ah,00H ;BIOS调用 int 1aH add dl,18 ;定时1s,需要18个定时单位 mov bl,dldloop:mov ah, 00H int 1ah cmp dl,bl ;是否累计到1s jnz dloop ;没到,继
8、续读 pop dx pop bx pop axendm data segment ;数据定义 time db 20 times db 20 buf db 00 ;定义交通路口 table01 db | | N table02 db | | table03 db | | table04 db | | table05 db | | table06 db W | | E table07 db _ _ table08 db _ _ table09 db | | table10 db | | table11 db | | table12 db | | table13 db | | table14 db
9、| |S str db please input times: strcl db flg db 0 dataends codesegmentassume cs:code, ds:datamain proc far ;主函数 mov ax, data mov ds, ax mov es, ax mov ah,01h ;清除光标 mov cx,2000h int 10h call initial funct: mov al,times mov time,alN1: call showtime call getchar cmp al,r ;调整时间 jne loop1 call changtime
10、jmp functloop1: cmp al,a ;手动/自动控制状态 jne loop2 call openclose loop2: cmp al,b ;夜间模式 jne loop3 call nightloop3: cmp al,t ;紧急模式 jne loop4 call tenseloop4: cmp al,q ;退出 jne N1 esc: mov ah,4ch int 21h tense proc near mov time,0 mov flg,1 call timebuf showline buf,0,2,0514h,0004h ;红灯 ;紧急情况 showline buf,0,
11、2,0e10h,0004h ;红灯 showline buf,0,2,080bh,0004h ;红灯 showline buf,0,2,0c19h,0004h ;红灯 tn2: call getchar cmp al,t ;紧急控制按钮是否按下 jne tn1 jmp functtn1: cmp al,q ;退出控制按钮是否按下 jne tn2 jmp esc rettense endp night proc near mov time,0 call timebuf showline buf,0,2,0514h,000eh ;黄灯 ;夜间显示控制 showline buf,0,2,0e10h,
12、000eh ;黄灯 showline buf,0,2,080bh,000eh ;黄灯 showline buf,0,2,0c19h,000eh ;黄灯 ng2: call getchar cmp al,b ;夜间控制按钮是否按下 jne ng1 jmp functng1: cmp al,q jne ng2 jmp esc retnight endp openclose proc near ;开关子函数 mov time,0 call timebuf op: mov flg,0 call showd op4: call getchar ;调用输入控制字符 cmp al,o ;手动控制下开 jne
13、 op1 jmp opop1: cmp al,c ;手动控制下关 jne op2 mov flg,1 call showdop2: cmp al,q jne op3 ;退出 jmp esc op3: cmp al,a jne op4 ;手动/自动控制 jmp funct retopenclose endp changtime proc near ;改变时间子函数 showline strcl,0,2,0043h,000fh showline str,0,19,0030h,000fh mov ah,01h int 21h sub al,30h ;将输入时间值转化成 mov bl,10 输出十进制
14、值 mul bl mov times,al mov ah,01h int 21h sub al,30h add times,al mov al,times mov time,al retchangtime endp showtimeproc near ;时钟程序s1: mov ah,01h int 16h jnz s3 delay ;延时一秒 dec time cmp time,-1 jne s2 ;倒计时 mov al,times mov time,al inc flg cmp flg,2 jne s2 mov flg,0s2: call timebuf call showd jmp s1s
15、3:retshowtimeendp showd proc near cmp flg,0 jne d1 showline buf,0,2,0514h,0002h ;绿灯 showline buf,0,2,0e10h,0002h ;绿灯 showline buf,0,2,080bh,0004h ;红灯 showline buf,0,2,0c19h,0004h ;红灯 jmp d2d1: showline buf,0,2,0514h,0004h ;红灯 showline buf,0,2,0e10h,0004h ;红灯 showline buf,0,2,080bh,0002h ;绿灯 showline
16、 buf,0,2,0c19h,0002h ;绿灯d2: retshowd endp timebuf proc near ;显示时间 time=buf mov di,offset buf mov al,time mov bl,0ah mov ah,00h div bl add al,30h add ah,30h mov di0,al mov di1,ah rettimebuf endpgetchar proc near ;得到字符 mov ah,07h int 21h retgetchar endp initial proc near ;初始化交通路口的显示 showline table01,0,38,0000h,15 showline table02,0,38,0100h,15 showline table03,0,38,0200h,15 showline table04,0,38,0300h,15 showline table05,0,38,0400h,15 showline table06,0,38,0500h,15 showline table07,0,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年山东临沂城市国有资产运营有限公司招聘笔试参考题库附带答案详解
- 2025年四川广安市华油天然气广安有限公司招聘笔试参考题库含答案解析
- 2025年中国中铁二院工程集团有限责任公司招聘笔试参考题库含答案解析
- 复古宫殿测试题及答案
- 体验式学习2024年系统规划与管理师考试试题及答案
- 物联网系统中的网络搭建考虑试题及答案
- 母猪护理与职场技能的考核试题及答案
- 强化模考习惯2025年乡村全科执业助理医师试题及答案
- 常见营养问题及解决方案考核试题及答案
- 电子资源获取与使用试题及答案
- 十四五《中成药学》第一章-绪论
- 华南理工大学《软件分析设计与建模》2022-2023学年期末试卷
- 《外科护理学(第七版)》考试复习题库(浓缩500题)
- 任务2 比亚迪·秦混合动力汽车动力系统构造与检修
- 20222023银行招聘考试题库1000题第4372期含答案解析
- 世界500强企业管理层最钟爱的管理工具合集
- 森林管护工参考试题及答案
- 2022-2024年高考数学试题分类汇编:导数及其应用(解析版)
- GB/T 17727-2024船用法兰非金属垫片
- DBJ50T-481-2024 装配式开孔钢板组合剪力墙结构住宅 技术标准
- 2024版《CSCO非小细胞肺癌诊疗指南》更新要点
评论
0/150
提交评论