• 863.43 KB
  • 2022-04-22 11:46:24 发布

微机原理与接口技术笔试练习题及其参考解答.pdf

  • 40页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'福州大学微机原理与接口技术笔试试题资料及其解答Moderncomputerinterfacetechnicexamination个人资料内部使用版权所有翻版必究 moderncomputerinterfacetechnic微机原理与接口技术笔试练习题及其参考解答习题一:水塔自动控制系统(2007年)工作原理以及要求:1、水塔内部接有一个压力传感器,用来接收水的压力数据,传感器接收的压力范围是0~16公斤/平方厘米。每秒对压力传感器的数据进行采样,送往两个八段显示器显示,同时将采集到的数据送往DA转换器转换后,送示波器显示。2、水箱内部设计有两个入水口。(内置开关,不外显)两个入水口:口1(由开关K1控制)、口2(由开关K2控制)K1:是口1开关控制:为1:表示电源打开,口1开始注水;为0:表示电源关闭,口1停止注水;K2:是口2开关控制:为1:表示电源打开,口2开始注水;为0:表示电源关闭,口2停止注水;3、当水压=<3公斤/平方厘米,控制口1和控制口2同时注水;当3公斤/平方厘米<水压=<12公斤/平方厘米,控制口1注水;4、两个八段显示器,用来显示压力数据。5、两个发光二机管:一个为红色,另一个为绿色红色发光二极管亮:表示水压=<3公斤/平方厘米时,表示水箱缺水灭:表示水箱水量充足;绿色发光二极管亮:表示水箱正在注水灭:表示水箱停止注水。6、使用示波器将DAC0832接收的水压信号进行实时显示7、采用ADC0809进行AD转换8、要求产生输出对注水器的控制信号(可以用彩灯模拟)一、硬件设计:(可以使用总线、标号连接发、可加门器件)二、写出0809、8255、8253、0832各端口的地址及控制字三、画出程序框图四、写出程序(要加注释)只要你肯努力,就一定会有收获!-2- 微机原理与接口技术理论考试资料习题一参考解答:一、硬件设计电路图:-3-夏雨 moderncomputerinterfacetechnic二、设计说明:接线说明:1、A口输出:PA3,PA2分别接红绿灯输出信号;PA1,PA0作为注水器的内置开关控制信号;2、B口输出:送八段显示数字量;3、C上半口输出:PC7送高位位码;PC6送低位位码;4、C下半口输入:PC0读入1S脉冲信号。端口地址分配情况(编程):8253芯片:280H~283H8255芯片:290H~293HADC0809芯片:2A0HDAC0832芯片:2B0H设计说明:1、将红绿灯输出与控制信号一起输出,可以简化编程;2、由题意得,设计8255芯片A口必须采用方式0方式,因此,我们设计的时候必须置A口输出,B口输出,C上半口作为位码输出,C下半口作为脉冲输入;控制字说明:8255芯片控制字:10000001CW=81H8253芯片控制字:T0:0010X111CW0=27HLSB0=1000HT1:0110X111CW0=67HLSB0=1000H只要你肯努力,就一定会有收获!-4- 微机原理与接口技术理论考试资料三、编程实现:程序清单:datasegmentT0EQU280H;8253端口地址T1EQU281HT2EQU282HTCTLEQU283HPAEQU290H;8255端口地址PBEQU291HPCEQU292HPCTLEQU293HADCTLEQU2A0H;ADC0809端口地址DACTLEQU2B0H;DAC0832端口地址tabdb?;模数转换后数字量存储区bufdb3FH,06H,5BH,4FH,66H,6DH,7DH,27H,7FH,6FH,77H,7CH,39H,5EH,79H,71Hdataendscodesegmentmainprocfarassumecs:code,ds:datastart:xorax,ax;数据段初始化movax,datamovds,ax;**********写芯片控制字************;***8253实验段;1秒脉冲实现体movdx,tctl;送8253控制字cw=27Hmoval,27houtdx,almoval,10h;送时间常数1000movdx,t0outdx,almovdx,tctl;送8253控制字cw=67hmoval,67houtdx,al-5-夏雨 moderncomputerinterfacetechnicmoval,10h;送时间常数1000movdx,t1outdx,al;***8255实验段moval,81h;写8255控制字cw=81Hmovdx,PCTLoutdx,al;***********程序实现段************l0:callmodchangemoval,tab;保存转换后的数字量;*******压力比较器设计*****cmpal,03hjnbnext_1;大于跳转state_1:;******状态1******movdx,PAmoval,0fh;送控制信号及灯信号outdx,aljmpnext_2next_1:cmpal,12hjnbstate_3;大于跳转state_2:;******状态2*****movdx,PAmoval,05h;送控制信号及灯信号outdx,aljmpnext_2state_3:;******状态3*****movdx,PAmoval,0h;送控制信号及灯信号outdx,alnext_2:callB_print;调用八段显示函数;***读单脉冲movdx,PC;从PC0中读下降沿只要你肯努力,就一定会有收获!-6- 微机原理与接口技术理论考试资料inal,dxtestal,01hjnznext_2;*******数模转换过程*******movdx,DACTLmoval,tab;取数字量outdx,alnext_3:callB_print;送八段显示器显示;***读单脉冲movdx,PC;从PC0中读上升沿inal,dxtestal,01hjznext_3jmpl0movah,4chint21hretmainendp;************子程序设计部分***********;*******模数转换函数******modchangeprocnearmovdx,ADCTLmoval,0outdx,al;送虚启动信号;*****延时*****movcx,100dm1:loopm1;****存储数字量****movdx,ADCTLinal,dxmovtab,alretmodchangeendp-7-夏雨 moderncomputerinterfacetechnic;*******八段显示函数******B_printprocnear;高位显示movcl,4moval,tab;待显示的数据已在tab中andal,0F0H;读高位数据rolal,cl;左移4位leabx,bufxlat;八段显示器译码movdx,PBoutdx,al;送高位显示数据至PB端口movdx,PCmoval,80H;送高位位码outdx,almoval,0;送间隔outdx,al;低位显示moval,tab;待显示的数据已在tab中andal,0FH;读低位数据leabx,bufxlat;换码movdx,PBoutdx,al;送低位显示数据至PB端口movdx,PCmoval,40H;送低位位码outdx,almoval,0;送间隔outdx,alretB_printendpcodeendsendmain只要你肯努力,就一定会有收获!-8- 微机原理与接口技术理论考试资料习题二:电冰箱温度控制系统(2008年练习)工作原理及要求:1、冰箱内部接有一个温度传感器,用来接收冰箱内部的温度数据,传感器接收的温度范围是-16~10摄氏度。每秒对温度传感器的数据进行采样,送往八段显示器显示,同时将采集到的数据送往DA转换器转换后,送示波器显示。2、冰箱设置有三个功能键。K1:开启控制开关为1:表示电源打开,准备开始工作为0:表示电源关闭,停止工作K2:保鲜控制开关为1:表示启动保鲜功能为0:表示不使用保鲜功能K3:冷冻控制开关为1:表示启动冷冻功能为0:表示不使用冷冻功能提出假设:保鲜温度要求:0~5摄氏度(维持在0摄氏度)冷冻温度要求:-16~-10摄氏度(维持在零下10摄氏度)3、两个八段显示器:用来显示温度数据。(负数要求显示负号,正数,高位置0)4、三个发光二极管:红,绿,黄红色发光二极管亮:表示制冷压缩机正处于工作状态灭:表示制冷压缩机不在工作状态绿色发光二极管亮:表示冰箱处于保鲜状态中灭:表示冰箱处于非保鲜状态黄色发光二极管亮:表示温度>5摄氏度,不适合保鲜和冷冻灭:表示冰箱处于功能温度状态下5、使用示波器将DAC0832接收的温度信号进行实时显示6、采用ADC0809进行AD转换。7、温度的控制完全由程序依据所选的功能的温度范围来进行控制,同时要求产生对制冷压缩机的控制信号并输出。一、硬件设计:(可以使用总线、标号连接发、可加门器件)二、写出0809、8255、8253、0832各端口的地址及控制字三、画出程序框图四、写出程序(要加注释)-9-夏雨 moderncomputerinterfacetechnic习题二参考解答一、硬件设计电路图:只要你肯努力,就一定会有收获!-10- 微机原理与接口技术理论考试资料二、设计说明:接线说明:1、A口输出:PA3,PA2,PA1分别接红、绿、黄灯输出信号;PA0作为制冷压缩机的控制信号;2、B口输出:送八段显示数字量;3、C上半口输出:PC7送高位位码;PC6送低位位码;4、C下半口输入:PC0读入1S脉冲信号;PC3、PC2、PC1分别作为开关K3,K2,K1功能键的输入端。端口地址分配情况(编程):8253芯片:280H~283H8255芯片:290H~293HADC0809芯片:2A0HDAC0832芯片:2B0H控制字说明:8255芯片控制字:10000001CW=81H8253芯片控制字:T0:0010X111CW0=27HLSB0=1000HT1:0110X111CW0=67HLSB0=1000H-11-夏雨 moderncomputerinterfacetechnic三、编程实现:程序清单:datasegmentT0EQU280H;8253端口地址T1EQU281HT2EQU282HTCTLEQU283HPAEQU290H;8255端口地址PBEQU291HPCEQU292HPCTLEQU293HADCTLEQU2A0H;ADC0809端口地址DACTLEQU2B0H;DAC0832端口地址tabdb?;模数转换后数字量存储区bufdb3FH,06H,5BH,4FH,66H,6DH,7DH,27H,7FH,6FH,77H,7CH,39H,5EH,79H,71Hdataendscodesegmentmainprocfarassumecs:code,ds:datastart:xorax,ax;数据段初始化movax,datamovds,ax;**********写芯片控制字************;***8253实验段;1秒脉冲实现体movdx,tctl;送8253控制字cw=27Hmoval,27houtdx,almoval,10h;送时间常数1000movdx,t0outdx,almovdx,tctl;送8253控制字cw=67hmoval,67houtdx,al只要你肯努力,就一定会有收获!-12- 微机原理与接口技术理论考试资料moval,10h;送时间常数1000movdx,t1outdx,al;***8255实验段moval,81h;写8255控制字cw=81Hmovdx,PCTLoutdx,al;***********程序实现段************l0:xorax,axxorbl,bl;寄存器清零movdx,PC;从PC下半口读开关状态inal,dxmovbp,ax;保存开关状态;*******测启动开关K1*******testbp,02hjnzsk_2;不为0说明已经开启;---未开启处理策略---movdx,PC;往八段显示送熄灭符moval,0outdx,almovdx,PA;PA口送0Houtdx,aljmpl0;返回继续读开关状态;---已开启处理策略---sk_2:callmodchange;调用模数转换函数;---温度比较器一---moval,tab;取当前温度值cmpal,5h;确定黄灯状态jnbh_lmovbl,0h;小于则黄灯灭-13-夏雨 moderncomputerinterfacetechnicjmpnext_1h_l:movbl,02h;大于则黄灯亮next_1:moval,blmovdx,PA;送黄灯状态outdx,al;*******测保鲜功能开关K2*******testbp,04hjzsk_3;为0说明未开启此功能;---保鲜功能处理策略---orbl,04h;保鲜状态下绿灯亮;---温度比较器二---moval,tab;取当前温度值cmpal,0hjbsk_21;---启动制冷压缩机及工作状态灯---orbl,09h;------送出PA口状态数据-----sk_21:movdx,PAmoval,bl;送灯状态和控制信号outdx,aljmpnext_2;*******测冷冻功能开关K3*******sk_3:testbp,08hjzl0;---冷冻功能处理策略---;---温度比较器三---moval,tab;取当前温度值只要你肯努力,就一定会有收获!-14- 微机原理与接口技术理论考试资料cmpal,-10h;负数jbsk_31;---启动制冷压缩机及工作状态灯---orbl,09h;----送出PA口状态数据----sk_31:movdx,PAmoval,bl;送灯状态和控制信号outdx,alnext_2:callB_print;调用八段显示函数;***读单脉冲movdx,PC;从PC0中读下降沿inal,dxtestal,01hjnznext_2;*******数模转换过程*******movdx,DACTLmoval,tab;取数字量outdx,alnext_3:callB_print;送八段显示器显示;***读单脉冲movdx,PC;从PC0中读上升沿inal,dxtestal,01hjznext_3jmpl0movah,4chint21hretmainendp-15-夏雨 moderncomputerinterfacetechnic;**************子程序设计部分************;*******模数转换函数******modchangeprocnearmovdx,ADCTLmoval,0outdx,al;送虚启动信号;*****延时*****movcx,100dm1:loopm1;****存储数字量****movdx,ADCTLinal,dxmovtab,alretmodchangeendp;*******八段显示函数******B_printprocnear;高位显示moval,tab;待显示的数据已在tab中testal,80h;查看是否是负数jzzs;正数跳转;-----负数输出处理-----moval,40h;输出负号jmpP_O;-----正数输出处理----zs:moval,0hP_O:;输出movdx,PBoutdx,al;送高位显示数据至PB端口movdx,PCmoval,80H;送高位位码outdx,almoval,0;送间隔只要你肯努力,就一定会有收获!-16- 微机原理与接口技术理论考试资料outdx,al;低位显示moval,tab;待显示的数据已在tab中andal,0FH;读低位数据leabx,bufxlat;换码movdx,PBoutdx,al;送低位显示数据至PB端口movdx,PCmoval,40H;送低位位码outdx,almoval,0;送间隔outdx,alretB_printendpcodeendsendmain四、编程说明:1、整个程序运行过程中对PA口输出的提示信号是叠加的(或运算的叠加);2、温度中的负数假设使用补码表示法。因此,正数不变,对于负数只要测高位是否为0;3、程序设计中,当未选任何功能时,应该返回重新读取开关状态;4、整个温度控制,在功能前提下,均由程序自动实现。-17-夏雨 moderncomputerinterfacetechnic习题三:微波炉自动控制系统(2008年练习)工作原理及要求:1、微波炉内部接有一个温度传感器,用来接收微波炉内部温度的数据,传感器接收的温度范围是0~240(F0H)摄氏度。每秒对温度传感器的数据进行采样,送往八段显示器显示,同时将采集的数据送往DA转换器转换后,送示波器显示。2、微波炉设置有三个功能键:K1:开启控制开关为1:表示电源打开,准备开始工作为0:表示电源关闭,停止工作K2:温热控制开关为1:表示启动温热功能,进行加温为0:表示不采用温热功能K3:烘烤控制开关为1:表示启动烘烤功能,进行烘烤为0:表示不采用烘烤功能提出假设:1、温热要求:为了充分温热,当温度达到80摄氏度时,要求持续保持1分钟后结束温热2、烘烤要求:温度要在240摄氏度,当达240摄氏度时,要求温度持续保持45秒后结束3、两个八段显示器:用来显示温度数据。(采用十六进制表示)4、三个发光二极管:红,绿红色发光二极管亮:表示微波炉正处于工作状态灭:表示微波炉不在工作状态绿色发光二极管亮:表示完成所预定的功能(温热或烘烤)灭:表示还未完成预定功能或不在工作状态5、使用示波器将DAC0832接收的温度信号进行实时显示6、采用ADC0809进行AD转换。7、温度的实时控制完全由程序来实现,当达到预定温度时,按功能要求将温度持续相应的热烘时间长度。一、硬件设计:(可以使用总线、标号连接发、可加门器件)二、写出0809、8255、8253、0832各端口的地址及控制字三、画出程序框图四、写出程序(要加注释)只要你肯努力,就一定会有收获!-18- 微机原理与接口技术理论考试资料习题三参考解答一、硬件设计电路图:-19-夏雨 moderncomputerinterfacetechnic二、设计说明:接线说明:1.A口输出:PA2,PA1分别接红、绿灯输出信号;PA0作为微波炉加热控制信号;2.B口输出:送八段显示数字量;3.C上半口输出:PC7送高位位码;PC6送低位位码;4.C下半口输入:PC0读入1S脉冲信号;PC3、PC2、PC1分别作为开关K3,K2,K1功能键的输入端。端口地址分配情况(编程):8253芯片:280H~283H8255芯片:290H~293HADC0809芯片:2A0HDAC0832芯片:2B0H控制字说明:8255芯片控制字:10000001CW=81H8253芯片控制字:T0:0010X111CW0=27HLSB0=1000HT1:0110X111CW0=67HLSB0=1000H只要你肯努力,就一定会有收获!-20- 微机原理与接口技术理论考试资料三、编程实现:程序清单datasegmentT0EQU280H;8253端口地址T1EQU281HT2EQU282HTCTLEQU283HPAEQU290H;8255端口地址PBEQU291HPCEQU292HPCTLEQU293HADCTLEQU2A0H;ADC0809端口地址DACTLEQU2B0H;DAC0832端口地址tabdb?;模数转换后数字量存储区timedb?;计时器计时数字量存储区bufdb3FH,06H,5BH,4FH,66H,6DH,7DH,27H,7FH,6FH,77H,7CH,39H,5EH,79H,71Hdataendscodesegmentmainprocfarassumecs:code,ds:datastart:xorax,ax;数据段初始化movax,datamovds,ax;**********写芯片控制字************;***8253实验段;1秒脉冲实现体movdx,tctl;送8253控制字cw=27Hmoval,27houtdx,almoval,10h;送时间常数1000movdx,t0outdx,almovdx,tctl;送8253控制字cw=67hmoval,67h-21-夏雨 moderncomputerinterfacetechnicoutdx,almoval,10h;送时间常数1000movdx,t1outdx,al;***8255实验段moval,81h;写8255控制字cw=81Hmovdx,PCTLoutdx,al;***********程序实现段************S_t:moval,0hmovtime,al;一开始对内存区域清零处理movsi,0H;启动计时标志l0:xorax,axxorbl,blmovdx,PC;从PC下半口读开关状态inal,dxmovbp,ax;保存开关状态;*******测启动开关K1*******testbp,02hjnzsk_2;不为0说明已经开启;---未开启处理策略---movdx,PC;往八段显示送熄灭符moval,0outdx,almovdx,PA;PA口送0Houtdx,aljmps_t;返回继续读开关状态;---已开启处理策略---sk_2:orbl,04h;送红灯亮信号moval,blmovdx,PA只要你肯努力,就一定会有收获!-22- 微机原理与接口技术理论考试资料outdx,alcallmodchange;调用模数转换moval,tab;保存数字量;*********测K2开关状态*******testbp,04hjzK_3;未开启跳转;------k2开启(温热)----moval,tab;取温度数字量cmpal,80d;采用十进制jbk_21;小于则跳转;-----温度大于80------movsi,01H;置标志位为计时jmpk_22k_21:;-----温度小于80------orbl,01hk_22:jmphuihe_1;*********测k3开关状态*******k_3:testbp,08hjzs_t;-----K3开启(烘烤)-----moval,tabcmpal,240d;采用十进制jbk_31;小于则跳转;-----温度大于240d----movsi,01H;置标志位为计时jmpk_22k_31:;----温度小于240d-----orbl,01hhuihe_1:moval,bl;送PA口控制信号movdx,PA-23-夏雨 moderncomputerinterfacetechnicoutdx,al;***********调用计时子程序********testsi,01hjzl1;未开启计时器;--------已开启计时器处理-----callcountmoval,time;取计时数字量cmpal,0hjnzl1;计数未到;------计数已到处理-----movsi,0H;重新对计时标志位清理moval,06hmovdx,PAoutdx,all1:callB_print;调用八段显示函数;***读单脉冲movdx,PC;从PC0中读下降沿inal,dxtestal,01hjnzl1;*******数模转换过程*******movdx,DACTLmoval,tab;取数字量outdx,all3:callB_print;送八段显示器显示;***读单脉冲movdx,PC;从PC0中读上升沿inal,dxtestal,01hjzl3jmpl0movah,4chint21h只要你肯努力,就一定会有收获!-24- 微机原理与接口技术理论考试资料retmainendp;**************子程序设计部分************;*******模数转换函数******modchangeprocnearmovdx,ADCTLmoval,0outdx,al;送虚启动信号;*****延时*****movcx,100dm1:loopm1;****存储数字量****movdx,ADCTLinal,dxmovtab,alretmodchangeendp;*******八段显示函数******B_printprocnear;高位显示movcl,4moval,tab;待显示的数据已在tab中andal,0F0H;读高位数据rolal,cl;左移4位leabx,bufxlat;八段显示器译码movdx,PBoutdx,al;送高位显示数据至PB端口movdx,PCmoval,80H;送高位位码outdx,almoval,0;送间隔outdx,al;低位显示moval,tab;待显示的数据已在tab中-25-夏雨 moderncomputerinterfacetechnicandal,0FH;读低位数据leabx,bufxlat;换码movdx,PBoutdx,al;送低位显示数据至PB端口movdx,PCmoval,40H;送低位位码outdx,almoval,0;送间隔outdx,alretB_printendp;*********计数子程序*******countprocnearmoval,time;取当前计时值cmpal,0jnzcout_1;不为0则继续减一操作即可;----为0处理策略----testbp,04h;测功能开关K2jzck_3;为0跳转;----温热功能计时赋值---moval,60hmovtime,aljmpcout_1;转向减一操作ck_3:;功能开关K3moval,45hmovtime,alcout_1:subal,01h;减一操作dasmovtime,al;回存计数值retcountendpcodeendsendmain只要你肯努力,就一定会有收获!-26- 微机原理与接口技术理论考试资料四、编程说明:1、整个程序运行过程中,对PA口的控制信号和灯信号输出是叠加的(或运算)。因为,一个过程是在前一个前提的下执行的;2、在计时方面,我们采用倒计时方法。计时是否到,我们通过判断是否为0来辨别;3、在程序设计中,当未选任何功能时,应该返回重新读取开关状态;-27-夏雨 moderncomputerinterfacetechnic附:实验参考题:同类型设计题1、洗衣机自动控制系统设计;(带计数需要)2、交通灯控制系统;(实践考试题目)3、抢答器系统设计;(实践考试题目)4、函数发生器系统设计;(产生波形,实践考试题目)5、电压控制系统设计;(实践考试题目)6、空调自动控制系统设计;一、交通灯控制系统:通过编程实现如下功能:Step1:红灯亮35秒;Step2:绿灯亮30秒;Step3:黄灯亮5秒;执行完第三步后,循环回去第一步。同时,必须将秒值在八段数码管中显示出来。1、设计提示:1)因为涉及多个计时器,因此,我们可以采用倒计时的计时方法来设计计时装置;2)多个计时器是循环计时的,因此,我们必须设置一个标志位来作为选择哪一个计时器计时的标志,这样才可以实现程序的整个循环过程。2、硬件设计电路图:(略)3、地址编码:(参考程序段)只要你肯努力,就一定会有收获!-28- 微机原理与接口技术理论考试资料4、编程实现:程序清单:datasegmentPAEQU298H;8255端口地址PBEQU299HPCEQU29AHPCTLEQU29BHT0EQU288H;8253端口地址T1EQU289HT2EQU28AHTCTLEQU28BHtabdb?;用于存储数字量信息bufdb3FH,06H,5BH,4FH,66H,6DH,7DH,27H,7FH,6FH,77H,7CH,39H,5EH,79H,71Hdataendscodesegmentmainprocfarassumecs:code,ds:datastart:xorax,ax;数据段初始化movax,datamovds,ax;**********写芯片控制字************;***8253实验段movdx,tctl;送8253控制字cw=27Hmoval,27houtdx,almoval,10h;送时间常数1000movdx,t0outdx,almovdx,tctl;送8253控制字cw=67hmoval,67houtdx,almoval,10h;送时间常数1000movdx,t1-29-夏雨 moderncomputerinterfacetechnicoutdx,al;***8255实验段从PC0读如1S脉冲,从PB口输出八段显示码moval,81h;写8255控制字cw=81Hmovdx,PCTL;送至PCTLoutdx,al;***********程序实现段************movch,35h;初始化movtab,chmovsi,01hl0:callD_print;彩灯显示部分callB_print;在八段显示器中显示转换的数字量;***读单脉冲实现体movdx,PC;从PC0中读一个负脉冲inal,dxtestal,01hjnzl0;***倒计时减一操作***moval,tabsubal,01hdasmovtab,al;***后半个周期显示数字量***movch,al;取当前数字量/*******显示更新处*******/l1:callB_print;送八段显示器显示;***读单脉冲实现体movdx,PC;从PC0中读下降沿inal,dxtestal,01hjzl1只要你肯努力,就一定会有收获!-30- 微机原理与接口技术理论考试资料;****循环判断控制部分****moval,tab;取当前计数值cmpal,0h;当为0的时候修改计数值和功能标号jnzm_exitmovcl,01htestsi,01hjnzrl2;接下来是第二个时间段显示的处理testsi,02hjnzrl3;接下来是第三个时间段显示的处理testsi,04hjnzrl1;接下来是第一个时间段显示的处理jmpm_exit;如果什么都不是则退出rl2:;***********绿灯计数复位**************movsi,02h;修改功能标号moval,30h;修改计数值movtab,aljmpm_exitrl3:;************黄灯计数复位**************movsi,04h;修改功能标号moval,05h;修改计数值movtab,aljmpm_exitrl1:;***********红灯计数复位*************movsi,01h;修改功能标号moval,35h;修改计数值movtab,aljmpm_exitm_exit:jmpl0movah,4chint21hret-31-夏雨 moderncomputerinterfacetechnicmainendp;*********灯显示***********D_printprocneartestsi,01h;红灯jnzDl1testsi,02h;绿灯jnzDl2testsi,04h;黄灯jnzDl3jmpD_exit;如果什么都不是则退出Dl1:movdx,PAmoval,01houtdx,aljmpD_exitDl2:movdx,PAmoval,02houtdx,aljmpD_exitDl3:movdx,PAmoval,04houtdx,aljmpD_exitD_exit:retD_printendp;*******八段显示子程序*******B_printprocnear;高位显示movcl,4moval,ch;待显示的数据已经在ch寄存器中了andal,0F0H;读高位数据只要你肯努力,就一定会有收获!-32- 微机原理与接口技术理论考试资料rolal,cl;左移4位leabx,bufxlat;八段显示器译码movdx,PBoutdx,al;送高位显示数据至PB端口movdx,PCmoval,80H;送高位位码outdx,almoval,0;送间隔outdx,al;低位显示moval,ch;待显示的数据已经在ch寄存器中了andal,0FH;读低位数据leabx,bufxlat;换码movdx,PBoutdx,al;送低位显示数据至PB端口movdx,PCmoval,40H;送低位位码outdx,almoval,0;送间隔outdx,alretB_printendpcodeendsendmain-33-夏雨 moderncomputerinterfacetechnic二、电压控制系统设计要求通过编程实现如下功能:从滑动变阻器器中输入电压值,通过模数转换器采集。当电压值>4.5V时,红灯亮起;(电压太高状态)当电压值<1.0V时,黄灯亮起;(电压太低状态)当电压值介于1.0V~4.5V时,绿灯亮起;(正常工作状态)同时,将转换后的电压数字量在八段数码管上显示出来!1、设计说明:1)整个过程如下:模数转换Æ压值比较Æ控制输出Æ八段显示;2)设计难点在于压值比较和控制输出方面;2、硬件设计电路图:(略)3、地址编码:(参考编程实现部分)4、编程实现:程序清单:datasegmentADCTLEQU2A0H;ADC0809端口地址PAEQU298H;8255端口地址PBEQU299HPCEQU29AHPCTLEQU29BHT0EQU290H;8253端口地址T1EQU291HT2EQU292HTCTLEQU293Htabdb?;用于存储数字量信息bufdb3FH,06H,5BH,4FH,66H,6DH,7DH,27H,7FH,6FH,77H,7CH,39H,5EH,79H,71Hdataendscodesegmentmainprocfarassumecs:code,ds:datastart:只要你肯努力,就一定会有收获!-34- 微机原理与接口技术理论考试资料xorax,ax;数据段初始化movax,datamovds,ax;**********写芯片控制字************;***8253实验段;0.5秒脉冲实现体movdx,tctl;送8253控制字cw=27Hmoval,27houtdx,almoval,10h;送时间常数1000movdx,t0outdx,almovdx,tctl;送8253控制字cw=67hmoval,67houtdx,almoval,05h;送时间常数500movdx,t1outdx,al;***8255实验段从PC0读如1S脉冲,从PB口输出八段显示码moval,81h;写8255控制字cw=81Hmovdx,PCTL;送至PCTLoutdx,al;***********程序实现段************movch,0h;八段显示初始值movtab,0h;***前半个周期八段显示路号***l0:callD_print;先在灯处显示路号callB_print;在八段显示器中显示转换的数字量;***读单脉冲实现体movdx,PC;从PC0中读一个负脉冲inal,dxtestal,01h-35-夏雨 moderncomputerinterfacetechnicjnzl0;***模数转换过程调用***callmodchange;***后半个周期显示数字量***movch,tab;取当前数字量/*******显示更新处*******/l1:callB_print;送八段显示器显示;***读单脉冲实现体movdx,PC;从PC0中读下降沿inal,dxtestal,01hjzl1;****循环判断控制部分****jmpl0movah,4chint21hretmainendp;*********灯显示***********D_printprocnearmoval,tabcmpal,0e6h;判断是否高于4.5vjbd_p1moval,04h;高于4.5v红灯亮movdx,PAoutdx,aljmpD_exitd_p1:cmpal,33h;判断是否处于正常状态不低于1.0vjbd_p2moval,02h;正常状态处理movdx,PAoutdx,al只要你肯努力,就一定会有收获!-36- 微机原理与接口技术理论考试资料jmpD_exitd_p2:moval,01h;低于1.0v处理movdx,PAoutdx,alD_exit:retD_printendp;*********模数转换过程********modchangeprocnearpushcxmovdx,ADCTLmoval,0outdx,al;送虚启动信号(随便一个信号都可以);*****延时*****movcx,100d;平均执行一条指令的时间是1us左右restart:looprestart;******提取数字量******movdx,ADCTLinal,dx;读取转换完后的数字量movtab,al;存储数字量popcxretmodchangeendp;*******八段显示子程序*******B_printprocnear;高位显示movcl,4moval,ch;待显示的数据已经在ch寄存器中了andal,0F0H;读高位数据rolal,cl;左移4位leabx,bufxlat;八段显示器译码-37-夏雨 moderncomputerinterfacetechnicmovdx,PBoutdx,al;送高位显示数据至PB端口movdx,PCmoval,80H;送高位位码outdx,almoval,0;送间隔outdx,al;低位显示moval,ch;待显示的数据已经在ch寄存器中了andal,0FH;读低位数据leabx,bufxlat;换码movdx,PBoutdx,al;送低位显示数据至PB端口movdx,PCmoval,40H;送低位位码outdx,almoval,0;送间隔outdx,alretB_printendpcodeendsendmain说明注意地址译码电路的设计及与CPU的连线方式,尤其是8253、8255芯片的地址译码。对于0809芯片和0832芯片,应该注意与CPU的连线方式。只要你肯努力,就一定会有收获!-38- 微机原理与接口技术理论考试资料附:芯片与CPU连线参考附图8253芯片:8253芯片与CPU连线参考图:8255A端口的地址分配:8255芯片:8255芯片与CPU连线参考图:-39-夏雨 moderncomputerinterfacetechnic8255A端口的地址分配:DAC0832芯片:DAC0832芯片与CPU连线参考图:ADC0809芯片:ADC0809芯片与CPU连线参考图:只要你肯努力,就一定会有收获!-40-'