版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微机原理与接口技术实验报告!学习资料仅供参考![智慧交通路口控制实验]班级:姓名:学号:组员:一、实验目的智慧交通路口控制是一个基于实际工程原理,结合文献、现实十字路口交通的研究,对工程问题进行确定、表述和建模分析,获得最优设计方案,理解并在工程实践中遵守工程职业道德规范,根据实验室实验环境限定条件来确定实验方案。所有知识涵盖本课程中的并行接口8255芯片、汇编语言程序设计、算法分析、接口地址的确定、外围设备的控制等。通过此实验可以理解微机系统中接口电路的作用,掌握软件硬件协同工作原理,熟悉微机原理与接口技术的综合应用。最终达到如下实验目的:1.掌握可编程并行接口8255芯片的工作原理2.掌握利用并行接口芯片8255实现信号灯控制的硬件设计和软件设计3.掌握接口电路及汇编语言程序设计的调试方法4.了解PC机和实验系统板的连接原理,理解系统机扩展原理5.了解并行接口芯片在工程实践中的典型应用及实现方式。二、实验设备与环境1.TPC-JK-II实验系统1台2.TPC-JK-II实验系统所配套的软件---TPC-JK-II集成开发环境1套3.PC微机1台三、实验内容及指标1、设计要求设计利用TPC-ZK-II实验系统提供的8254芯片和实验台能提供、2MHz的时钟频率发生器分频的模车辆测速制硬连和程序设计。2、设计目标和性能指标主要内容是:设计利用TPC-JK-II实验系统提供的8254(8253)、8255芯片、七段数码管、液晶显示器、8*8点阵实现智慧交通测速制的硬件电路设计和程序设计。eq\o\ac(○,1)基础部分:1)通过实际调研了解交通测速原理,确定实现的算法流程,编程实现并调试完成基于定时器测量的车辆测速的模拟控制。2)利用实验系统设计硬件电路,明确8254、8255芯片端口地址(1)编程实现并调试完成车辆测速的模拟控制。通过TPC-ZK-II实验箱8254(8253)接口芯片实现计数和定时功能。通过拨码开闭模拟车辆进入或驶离测速区域,当开关处于闭合状态时(向上拨通),表示车辆进入测速区域,反之表示驶离测速区域。通过TPC-ZK-II实验箱LCD操作显示速度值。合理选择8254的工作方式以及计数初值,通过计数器来间接计算出时间,通过与距离换算得到速度,并通过DOS功能调用在屏幕上打印出来。通过12864LCD液晶滚动显示出计数值(2)了解定时/计数器在工程实践中的典型应用及实现方式分析设计方案并比较和其它可选的测速的技术性能差别。eq\o\ac(○,2)提高部分:1)多路速度测量数据模拟,将单路开关控制,改为通过4*4键盘输入控制。通过TPCZK-II实验箱上的4*4键盘模拟不同路段的车辆测速功能。以键盘的每一行代表不同的路段,不同路段可以有不同的限速,每行中的第一列和最后一列键按下时,代表测速开始和测速结束,例如按下"1"键表示进入测速区间、按下"4"键表示离开测速区间。8254只有3个定时/计数器,试评估4路并发测速的可行性,如何扩展实现多路并发测速。2)通过实验箱上12864LCD液晶滚动显示当前测速路段的车辆速度和该路段的限速。eq\o\ac(○,3)扩展部分:1)利用8254(8253)计数器产生。其中8254输入时钟频率为1MHz。2)8255芯片在本次实验中用于控制输入,显示输出,功能较为繁多。在使用该芯片时,需要合理规划,以充分利用该芯片的数据口。3)各芯片的端口地址需要根据硬件自行合理设计。4)掌握数码管的连接方式以及相关程序的编写。5)主机和从机之间的数据传送和记录,涉及DOS调用。3、硬件连接图实验硬件连接图具体的连接方式为,IO编码地址中的Y0和Y1要分别接在8254与8255的CS端,在8254中的计数器0的CLK0接1MHz脉冲、GATE0接+5v高电平、OUT0接CLK1、GATE1接+5v高电平、OUT2接CLK2、GATE2接拨码开关K7,8255的PA接数码管段选、PB0与PB1接数码管位选S0、S1。四、程序流程图计数器工作流程图第一个和第二个计数器用作时钟分频,均工作在方式3,最终得到1Hz的方波信号,第三个计数器以此为时钟工作在方式2作为输入的闸门信号,每经过1秒计数值就减1,结束计数时用起点和终点的计数差值就可以计算出时间。拨码开关输入流程图实验台包含4个开关K0至K3,开关拨到“1”位置时开关断开,输出高电平。拨到“0”位置时开关接通输出低电平。电路中串接了保护电阻,接口电路不直接同+5V、GND相连,有效的防止因误操作损坏成电路现象。4*4键盘程序流程图4*4矩阵键盘是用4条I/O线作为行线,4条I/O线作为列线组成的键盘。在行线和列线的每一个交叉点上,设置一个按键。使用该键盘时,采用对4*4矩阵键盘逐行逐列扫描的方式判断是否有按键按下。五、方案设计及讨论【方案设计】eq\o\ac(○,1)8254计数器初始化:计数器0和计数器1工作在方式3即方波发生器,各自分频系数就是计数初值,选用1MHz的系统内部时钟,分频系数设为1000,得到1Hz的方波。计数器2设置工作在方式2,为了记录更长的时间,计数初值越大越好故设为0FFFFH。eq\o\ac(○,2)8255初始化:A口的地址288H,采用PA0~7口的方式输出,与数码段段码输入相连,PB0与PB1与数码管的片选信号相连,由于假设长度为100m一般速度均为一位或两位数,所以用两个数码管可以显示出速度。eq\o\ac(○,3)拨码开关与脉冲发生:将拨码开关与GATE2连接,用作闸门信号,而CLK0为1MHz脉冲,作为时钟信号。eq\o\ac(○,4)屏幕显示与数码管显示:调用Dos2功能将速度显示到屏幕上,并且不断循环测速直到开关完成一次开闭(即车辆通过开始和结束测量路段),数码管可以用PA口输入,但要都要注意数字与ASCII码的转换。方法一: 将8255A和8254初始化,82255A口控制数码管显示,B口选通数码管,这里为一种实现方式,但是最终通过验收的方式不是此方式,开关状态采用PC0口读取,并将开关和GATE2连接起来,此时OUT1输出1Hz方波信号,计数器二工作在工作方式二,产生N-1个脉冲计数,计数值恰好为N秒。如果开关向上拨,则GATE2变成高电平,这里的计数器二开始计数,当开关向下拨时,停止计数。若开关向下拨,说明计数完毕,此时将计数器二计到的数锁存到寄存器AX中,送给BX进行查表工作,将相应值送到A口输出到数码管,循环操作,使数码管实时显示。最后进行DOS显示输出。调用DOS2号功能,先判断读取到的数是否大于9,若大于,则加37H后打印,若不大于,则加30H后打印,在屏幕上显示出来。方法二: 8254计数器0和计数器1工作在方式3即方波发生器,各自分频系数就是计数初值,选用1MHz的系统内部时钟,分频系数设为1000,得到1Hz的方波。计数器2设置工作在方式2,计数初值设为0FFFFH。8255A口的地址288H,采用PA0~7口的方式输出,与数码段段码输入相连,PB0与PB1与数码管的片选信号相连,由于假设长度为100m一般速度均为一位或两位数,所以用两个数码管可以显示出速度,拨码开关与GATE2连接,用作闸门信号,而CLK0为1MHz脉冲,作为时钟信号,调用Dos2功能将速度显示到屏幕上,并且不断循环测速直到开关完成一次开闭,数码管可以用PA口输入。【方案讨论】讨论一:计数器如何链接? 由于本次实验是用计数器记录时间来测量速度,但是在实验箱中的脉冲频率为1MHz的高频脉冲,这显然是不能用来测速的,而计数器还可以作为分频器使用,只用将0、1、2分别按着一定规则连接,本次实验类似于串联,就可以将本来的高频信号进行两次的1000分频,这样一来我们就能得到低频的1Hz信号,用于测量时间刚刚好。讨论二:速度的最终显示问题?在本实验中是要测量速度,而计数器的测量时间可看成是的中间必须要得到的实验数据,用于产生最后的测量速度,所以我们讨论认为可以在数码管和屏幕上时间,当最后完成测试后,得到的时间与路程运算得到最后的速度,然后最终再显示在屏幕和数码管上。讨论二:如果计数器使用中计数方式?计数器中的数字有两种计数方式,一个是不断地加1,另一种是不断地减1,从小到大和从大到小都能实现计数功能,而且硬件连接没有区别,但从大到小在实际的汇编操作中更加简单,且符合计数器的工作原理,如果对记录时间要求不高的实验中可用这种方法,从小到大显示测量时间,需要不断地对计数值作到ASCⅡ码的转换,但它符合我们思考的习惯,但是我们学习汇编是为了学习计算机的原理,这里我们采用第二种,不断减一的方式。六、实验结果分析拨码开关向上拨动开始计时,当计数器时间不断增加到20时候,我们将拨码开关向下拨回,结束计时。 结束计时后数码管显示速度为05,由于假设路程为100m,所以当计时20s结束时,车辆速度就是5m/s,这时在屏幕上显示为currentspeed:05结果也是正确,本次实验顺利完成。七、心得体会与分工 略【源代码】一:DATASSEGMENT;此处输入数据段代码L8255_AEQU288H;A端口地址,数码管数据L8255_BEQU289H;B端口地址,B0,B1段选L8255_CEQU28AH;C端口地址,C0读拨码开关L8255_KEQU28BH;寄存器端口地址L8254_0EQU280H;计数器0,工作方式3,1000分频L8254_1EQU281H;计数器1,工作方式3,1000分频,输出1HzL8254_2EQU282H;计数器2,工作方式2,硬件控制,计数L8254_KEQU283H;寄存器端口地址FLAGDB0;拨码开关状态LEDDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H;段码ASCDB30H,31H,32H,33H,34H,35H,36H,37H,38H,39H;保存数字1-9的ASCII码TIMEDB0;时间TIME_GEDB0;时间个位TIME_SHIDB0;时间十位BUFDB100NUMDW0;计数结束的值,16位DATASENDSSTACKSSEGMENTSTACK;此处输入堆栈段代码DW256DUP(?)STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AX;***********并行IO8255初始化MOVDX,L8255_KMOVAL,81HOUTDX,AL;A方式0输出,B方式0输出,C7-C4输出,C0-C3输入;***********定时器8254初始化MOVDX,L8254_K;向8254写控制字MOVAL,36H;使计数器0为工作方式3OUTDX,ALMOVAX,1000;写入循环计数初值1000MOVDX,L8254_0OUTDX,AL;先写入低字节MOVAL,AHOUTDX,AL;后写入高字节MOVDX,L8254_KMOVAL,76H;设计数器1工作方式3,输出1Hz方波OUTDX,ALMOVAX,1000;写入循环计数初值1000MOVDX,L8254_1OUTDX,AL;先写低字节MOVAL,AHOUTDX,AL;后写高字节MOVDX,L8254_KMOVAL,0B4H;设计数器2工作方式2,循环计数,硬件控制OUTDX,ALMOVAX,0;写入循环计数初值0MOVDX,L8254_2OUTDX,AL;先写低字节MOVAL,AHOUTDX,AL;后写高字节MOVFLAG,0MOVTIME,0;***********主循环START_MAIN:CALLSHOW_2;显示时间CALLSHOW_DOSCALLKEY_SCAN;按键扫描CALLTIME_DATAUP;时间更新NEXT_MAIN:JMPSTART_MAIN;*********返回DOSMOVAH,4CHINT21H;*********两位数码管显示子程序SHOW_2PROCPUSHAXPUSHBXPUSHDXMOVBL,10;将10放入寄存器BX,用来分离各位数MOVAL,TIMEMOVAH,0DIVBL;AL/BL,商放入AL,余数放入AHMOVTIME_GE,AHMOVAH,0DIVBLMOVTIME_SHI,AHMOVAH,0LEABX,LED;将数码管码表的首地址放入BXMOVAL,TIME_GEXLAT;查表指令,将DS:[BX+AL]的内容送到AL中MOVTIME_GE,ALLEABX,LED;将数码管码表的首地址放入BXMOVAL,TIME_SHIXLAT;查表指令,将DS:[BX+AL]的内容送到AL中MOVTIME_SHI,AL;个位MOVDX,L8255_A;自8255A的口输出MOVAL,00000000B;数码管灭OUTDX,ALMOVDX,L8255_BMOVAL,00000001B;右侧数码管亮OUTDX,ALMOVDX,L8255_A;自8255A的口输出MOVAL,TIME_GEOUTDX,ALCALLDELAY1;延时;十位MOVDX,L8255_A;自8255A的口输出MOVAL,00000000B;数码管灭OUTDX,ALMOVDX,L8255_BMOVAL,00000010B;左侧数码管亮OUTDX,ALMOVDX,L8255_A;自8255A的口输出MOVAL,TIME_SHIOUTDX,ALCALLDELAY1;延时POPDXPOPBXPOPAXRETSHOW_2ENDP;*********一位数码管显示子程序SHOW_1PROCPUSHAXPUSHBXPUSHDXCMPTIME,0FHJASHOW_1_ENDMOVDX,L8255_BMOVAL,00000001B;右侧数码管亮OUTDX,ALLEABX,LED;将数码管码表的首地址放入BXMOVAL,TIMEXLAT;查表指令,将DS:[BX+AL]的内容送到AL中;输出MOVDX,L8255_A;自8255A的口输出OUTDX,ALSHOW_1_END:POPDXPOPBXPOPAXRETSHOW_1ENDP;*********DOS显示子程序SHOW_DOSPROCPUSHAXPUSHBXPUSHDXCMPFLAG,0JZSHOW_DOS_ENDMOVAL,TIMECMPBUF,ALJZSHOW_DOS_ENDMOVAL,TIMEMOVBUF,ALMOVBL,10;将10放入寄存器BX,用来分离各位数MOVAL,TIMEMOVAH,0DIVBL;AL/BL,商放入AL,余数放入AHMOVTIME_GE,AHMOVAH,0DIVBLMOVTIME_SHI,AHMOVAH,0MOVAL,TIME_SHI;ADDAL,30HLEABX,ASC;将数码管码表的首地址放入BXXLAT;查表指令,将DS:[BX+AL]的内容送到AL中MOVDL,AL;用DOS的2号功能,输出字符MOVAH,02HINT21HMOVAL,TIME_GE;ADDAL,30HLEABX,ASC;将数码管码表的首地址放入BXXLAT;查表指令,将DS:[BX+AL]的内容送到AL中MOVDL,AL;用DOS的2号功能,输出字符MOVAH,02HINT21HMOVDL,',';用DOS的2号功能,输出字符MOVAH,02HINT21HSHOW_DOS_END:POPDXPOPBXPOPAXRETSHOW_DOSENDP;*********按键查询显示子程序,C0读拨码开关KEY_SCANPROCPUSHAXPUSHBXPUSHDXMOVDX,L8255_CINAL,DXANDAL,00000001BCMPAL,1;高电平计数JZK1;否则为0MOVFLAG,0JMPKEY_SCAN_ENDK1:MOVFLAG,1KEY_SCAN_END:POPDXPOPBXPOPAXRETKEY_SCANENDP;*********时间更新子程序子程序TIME_DATAUPPROCPUSHAXPUSHBXPUSHDXCMPFLAG,1JZT1T0:JMPTIME_DATAUP_ENDT1:MOVAL,10000000B;锁存计数器2的值MOVDX,L8254_KOUTDX,ALMOVDX,L8254_2INAL,DX;计数器2低字节MOVAH,AL;暂存AHINAL,DX;计数器2高字节XCHGAH,AL;放入AXMOVNUM,AX;放计数末值MOVBX,0SUBBX,AXMOVTIME,BLTIME_DATAUP_END:POPDXPOPBXPOPAXRETTIME_DATAUPENDP;*********延时子程序1DELAY1PROC;数码管延时PUSHAXPUSHCXPUSHDXMOVCX,0FFFHX1:LOOPX1POPDXPOPCXPOPAXRETDELAY1ENDPCODESENDSENDSTART方案二:DATASEGMENTLISTDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71HDATAENDSMSTACKSEGMENTSTACKDB100DUP(?)MSTACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:MSTACKSTART:MOVAX,DATAMOVDS,AX;*******************************************************8254初始化;控制寄存器地址283H;计数器0地址280H;计数器1地址281H;计数器2地址282HMOVDX,283H;设定各计数器工作方式MOVAL,00110110B;计数器0工作方式3方波发生器,先高后低,二进制计数OUTDX,AL;写计数器0控制字MOVAL,01110110B;计数器1工作方式3方波发生器,先高后低,二进制计数OUTDX,AL;写计数器1控制字MOVAL,10110100B;计数器2工作方式2分频器,先高后低,二进制计数OUTDX,AL;写计数器2控制字;设定各计数器计数初值(由输入时钟频率确定)假定1MHzMOVDX,280HMOVAX,1000;计数初值/分频系数1000OUTDX,AL;写计数器0初值低八位MOVAL,AHOUTDX,AL;写计数器0初值高八位MOVDX,281HMOVAX,1000;计数初值/分频系数1000OUTDX,AL;写计数器1初值低八位MOVAL,AHOUTDX,AL;写计数器1初值高八位MOVDX,282HMOVAX,0FFFFH;计数器2计数初值OUTDX,ALMOVAL,AHOUTDX,AL;**********************************************************8255初始化;控制寄存器端口地址28BH;A口的地址288H;B口的地址289H;C口的地址28AHMOVDX,28BHMOVAL,10001001B;A口方式0输出(接数码管),B口方式0输出(选通数码管),PC7输入(查询开关拨断)OUTDX,ALMOVDX,289HMOVAL,00000001B;PB0置1,只显示数码管最低位OUTDX,AL;************************************************************WAIT_:MOVDX,28AHINAL,DXANDAL,80HTESTAL,10000000BJZWAIT_WAIT1:MOVAL,3FHMOVDX,288HOUTDX,ALMOVDX,28AHINAL,DXANDAL,80HTESTAL,10000000BJZSTOP;测速完毕,GATE2无效,转STOPJMPWAIT1;否则继续检测STOP:MOVAL,10000000B;计数器2锁存命令MOVDX,283HOUTDX,AL;测速完毕发锁存命令,写入控制端口MOVDX,282HINAL,DX;读计数器2的低字节MOVAH,ALINAL,DX;读计数器2的高字节XCHGAH,AL;计数值存放在AX中MOVBX,0FFFFHSUBBX,AX;计算测速时间,取整处理MOVAL,[BX+LIST];取对应的阴极数码管段码MOVDX,288HOUTDX,AL;8255的PA口输出显示结果CMPBL,9JLEPRINT;小于等于9直接打印ADDBL,7H;否则加7PRINT:MOVAL,BLADDAL,30H;测速时间转化为对应ASCⅡ码MOVDL,AL;调用2号功能输出结果MOVAH,02HINT21HJMPWAIT_;进行下一次测速CODEENDSENDSTART二:DATASSEGMENTL8255_AEQU288H;A端口地址,数码管数据L8255_BEQU289H;B端口地址,B0,B1位选数码管L8255_CEQU28AH;C端口地址,C0读拨码开关L8255_KEQU28BH;寄存器端口地址L8254_0EQU280H;计数器0,工作方式3,1000分频L8254_1EQU281H;计数器1,工作方式3,1000分频,输出1HzL8254_2EQU282H;计数器2,工作方式2,硬件控制,计数L8254_KEQU283H;寄存器端口地址FLAGDB0;拨码开关状怿LEDDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H;段码ASCDB30H,31H,32H,33H,34H,35H,36H,37H,38H,39H;保存数字1-9的ASCII码TIMEDB0;时间TIME_GEDB0;时间个位TIME_SHIDB0;时间十位SPEEDDB0;速度SPEED_GEDB0;速度个位SPEED_SHIDB0;速度十位DISTANCEDB100;路程bufdb100MSG1DB0DH,0AH,"THESPEEDIS:$"NUMDW0;计数结束的值,16位DATASENDSSTACKSSEGMENTSTACKDW256DUP(?)STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AX;***********并行IO8255初始匿MOVDX,L8255_KMOVAL,81HOUTDX,AL;A方式0输出,B方式0输出,C7-C4输出,C0-C3输入;***********定时器8254初始化MOVDX,L8254_K;向8254写控制字MOVAL,36H;使计数器0为工作方式3OUTDX,ALMOVAX,1000;写入循环计数初值1000MOVDX,L8254_0OUTDX,AL;先写入低字节MOVAL,AHOUTDX,AL;后写入高字节MOVDX,L8254_KMOVAL,76H;设计数器1工作方式3,输出1hz方波OUTDX,ALMOVAX,1000;写入循环计数初值1000MOVDX,L8254_1OUTDX,AL;先写低字节MOVAL,AHOUTDX,AL;后写高字节MOVDX,L8254_KMOVAL,0B4H;设计数器2工作方式2,循环计数,硬件控制OUTDX,ALMOVAX,0;写入循环计数初值0MOVDX,L8254_2OUTDX,AL;先写低字节MOVAL,AHOUTDX,AL;后写高字节MOVFLAG,0MOVTIME,0;***********主循玿START_MAIN:CALLCLECALLSHOW_2;显示时间CALLSHOW_DOSCALLKEY_SCAN;按件扫描CALLTIME_DATAUP;时间更新NEXT_MAIN:JMPSTART_MAIN;*********返回DOSMOVAH,4CHINT21HCLEPROCPUSHAXPUSHBXPUSHDXMOVAX,0POPDXPOPBXPOPAXRETCLEENDP;*********两位数码管显示子程序SHOW_2PROCpushAXpushBXpushDXCMPFLAG,0JZSHOWSPEEDMOVBL,10;将10放入寄存器BX,用来分离个位数MOVAL,TIMEMOVAH,0DIVBL;AL/BL,商放入AL,余数放入AHMOVTIME_GE,AHMOVAH,0DIVBLMOVTIME_SHI,AHMOVAH,0LEABX,LED;将数码管码表的首地址放入BXMOVAL,TIME_GEXLAT;查表指令,将DS:[BX+AL]的内容送到AL中MOVTIME_GE,ALLEABX,LED;将数码管码表的首地址放入BXMOVAL,TIME_SHIXLAT;查表指令,将DS:[BX+AL]的内容送到AL中MOVTIME_SHI,AL;个位MOVDX,L8255_A;自8255A的口输出MOVAL,00000000B;数码管灭OUTDX,ALMOVDX,L8255_BMOVAL,00000001B;右侧数码管亮OUTDX,ALMOVDX,L8255_A;自8255A的口输出MOVAL,TIME_GEOUTDX,ALCALLDELAY1;延时;十位MOVDX,L8255_A;自8255A的口输出MOVAL,00000000B;数码管灭OUTDX,ALMOVDX,L8255_BMOVAL,00000010B;左侧数码管亮OUTDX,ALMOVDX,L8255_A;自8255A的口输出MOVAL,TIME_SHIOUTDX,ALCALLDELAY1;延时JMPSHOW_2ENDSHOWSPEED:MOVBL,10;将10放入寄存器BX,用来分离个位数MOVAL,SPEEDMOVAH,0DIVBL;AL/BL,商放入AL,余数放入AHMOVSPEED_GE,AHMOVAH,0DIVBLMOVSPEED_SHI,AHMOVAH,0LEABX,LED;将数码管码表的首地址放入BXMOVAL,SPEED_GEXLAT;查表指令,将DS:[BX+AL]的内容送到AL中MOVSPEED_GE,ALLEABX,LED;将数码管码表的首地址放入BXMOVAL,SPEED_SHIXLAT;查表指令,将DS:[BX+AL]的内容送到AL中MOVSPEED_SHI,AL;个位MOVDX,L8255_A;自8255A的口输出MOVAL,00000000B;数码管灭OUTDX,ALMOVDX,L8255_BMOVAL,00000001B;右侧数码管亮OUTDX,ALMOVDX,L8255_A;自8255A的口输出MOVAL,SPEED_GEOUTDX,ALCALLDELAY1;延时;十位MOVDX,L8255_A;自8255A的口输出MOVAL,00000000B;数码管灭OUTDX,ALMOVDX,L8255_BMOVAL,00000010B;左侧数码管亮OUTDX,ALMOVDX,L8255_A;自8255A的口输出MOVAL,SPEED_SHIOUTDX,ALCALLDELAY1;延时LEADX,MSG1MOVAH,9INT21HMOVAL,SPEEDMOVBUF,ALMOVBL,10;将10放入寄存器BX,用来分离个位数MOVAL,SPEEDMOVAH,0DIVBL;AL/BL,商放入AL,余数放入AHMOVSPEED_GE,AHMOVAH,0DIVBLMOVSPEED_SHI,AHMOVAH,0MOVAL,SPEED_SHI;ADDAL,30HLEABX,ASC;将数码管码表的首地址放入BXXLAT;查表指令,将DS:[BX+AL]的内容送到AL中MOVDL,AL;用dos02号功能,输出字符MOVAH,02HINT21HMOVAL,SPEED_GE;ADDAL,30HLEABX,ASC;将数码管码表的首地址放入BXXLAT;查表指令,将DS:[BX+AL]的内容送到AL中MOVDL,AL;用dos02号功能,输出字符MOVAH,02HINT21HSHOW_2END:popDXpopBXpopAXRETSHOW_2ENDP;*********一位数码管显示子程序SHOW_1PROCpushAXpushBXpushDXCMPTIME,0FHJASHOW_1_ENDMOVDX,L8255_BMOVAL,00000001B;右侧数码管亮OUTDX,ALLEABX,LED;将数码管码表的首地址放入BXMOVAL,TIMEXLAT;查表指令,将DS:[BX+AL]的内容送到AL中;输出MOVDX,L8255_A;8255A的口输出OUTDX,ALSHOW_1_END:popDXpopBXpopAXRETSHOW_1ENDP;*********DOS显示子程序SHOW_DOSPROCpushAXpushBXpushDXCMPFLAG,0JZSHOW_DOS_ENDMOV
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙江师范大学行知学院《建筑学专业导论》2023-2024学年第一学期期末试卷
- 中国音乐学院《生物信息技术》2023-2024学年第一学期期末试卷
- 郑州卫生健康职业学院《企业项目实践》2023-2024学年第一学期期末试卷
- 学习领会《教育强国建设规划纲要(2024-2035年)》心得体会
- 玉溪职业技术学院《数理统计及软件》2023-2024学年第一学期期末试卷
- 物流行业智能化协作网络设计
- IT业务数据季度总结模板
- 业务操作-房地产经纪人《业务操作》名师预测卷1
- 农业公司年度汇报
- 柏拉图与《理想国》读书笔记
- 高三期末家长会 高中期末考试成绩分析会ppt
- 15.5-博物馆管理法律制度(政策与法律法规-第五版)
- 水泥厂钢结构安装工程施工方案
- 2023光明小升初(语文)试卷
- 三年级上册科学说课课件-1.5 水能溶解多少物质|教科版
- GB/T 7588.2-2020电梯制造与安装安全规范第2部分:电梯部件的设计原则、计算和检验
- GB/T 14600-2009电子工业用气体氧化亚氮
- 小学道德与法治学科高级(一级)教师职称考试试题(有答案)
- 河北省承德市各县区乡镇行政村村庄村名居民村民委员会明细
- 实用性阅读与交流任务群设计思路与教学建议
- 应急柜检查表
评论
0/150
提交评论