




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微机原理课程设计一、数据采集系统综合设计实验设计任务:二、芯片介绍1.定时/计数器芯片Intel8253(略)网上找2.8259中断控制器(略)(1)初始化字:3.A/D转换器集成芯片ADC0809(略)三、序模块的设计及其详细说明如下1.预定义部分DATASEGMENTLED_DATA1DB?LED_DATA2DB?LEDDB3FH,06H,5BH,4FH,66H,6DH,07H,7FH,6FH,77HDB7CH,39H,5EH,79H,71H;共阴数码管的段码表DATAENDSCODESSEGMENTASSUMECS:CODES,DS:DATA,SS:SSEGMAIN:MOVAX,DATAMOVDS,AXMOVAX,CODESMOVSS,AXACALLSET_8253;调8253计数器设置子程序ACALLSET_8259;调中断控制器8259设置子程序2.用8253产生1S的定时脉冲每隔一秒产生一个脉冲,该脉冲由OUT0输出。设系统时钟周期为0.5us,先用定时器1产生周期为1ms的方波,再将计数器1的OUT1接到定时器0的CLK0,让计数器0对OUT1计数,并每计数1000次输出一个脉冲,便得到每隔1S对8259提出一次中断请求。可知:计数器1工作于方式31ms/0.5ms=2000即为计数器1的初值,由于初值大于256,送控制字时,应使赋值方式选择为先低8位,后高8位。计数器0工作于方式2,初值1000,同样,赋值方式为先地位、后高位。设8253占用的设备端口地址为0FF40H-0FF43H,计数器0的地址为:0FF40H,计数器1的地址为:0FF41H,控制寄存器的地址为:0FF43H.程序如下:SET_8253PROCMOVDX,0FF43HMOVAL,01110110B;计数器1,方式3,先送低8位、后送高8位,二进制OUTDX,MOVAL,00110100B;计数器0,方式2,先送低8位、后送高8位,二进制OUTDXMOVDX,0FF41H;计数器1的地址MOVAX,2000;计数器1的初值OUTDXMOVAL,AHOUTDX,AL;由于输出数据用的中间寄存器必须为ALMOVDX,0FF40H;计数器0占用设备的端口地址MOVAX,1000;计数器零的初值OUTDXMOVAL,AHOUTDXRETSET_8253ENDP3.8259中断处理将计数器0的OUT0接到8259的IR0端,以8253的OUT0作为中断源产生中断请求,中断类型号为08H,设置IR0的处罚方式为上升沿触发设置中断向量SET_8259:PUSHDS ;保存当前段地址LEADX,INTR ; 取中断处理程序的偏移地址MOVAX,SEGINTR ;取中断处理程序的段地址MOVDS,AXMOVAL,08H ;送中断类型号MOVAH,25H ;用25H功能号设置中断向量INT21H ;调用DOS功能POPDS ;回复当前段地址8259初始化:设端口地址20H、21H,中断类型码为:08H-0FH,I/O地址为奇数(A0=1)时,则写(ICW2、ICW3、ICW4和OCW1),地址为偶数时,写(ICW2、ICW3)MOVAL,13H;OUT20HJMPINT1INT1: MOVAL,08H; OUT21HJMPINT2INT2: MOVAL,00H; OUT21H,AL RET4.ADC0809中断服务程序设8088和ADC0809之间用一片8255用于扩展I/O口,设该片8255的地址为0378H-037BH,A、B、C三个端口均工作在方式0,A口为转换结果的输入,B口输出通道地址,发出地址所存信号和启动转换,C口低四位用于读取EOC的状态。SET_8255PROCNEAR;定义8255设置的子程序 MOVDX,037BH MOV AL,91H OUTDX RETSET_8255ENDP;过程结束INTR:CALLSET_8255 MOVBL,0CHG:MOVAL,BLMOVDX,0379HOUTDXORAL,10HOUTDX,AL;送ALE一个上升沿信号,将端口选择信号锁存ANDAL,0EFHOUTDX,AL;送START一个下降沿信号,启动转换NOPMOVDX,037AH;送C口地址LOOP: INAL,DX; ANDAL,02H JZLOOP;还未转换结束,则等待 MOVDX,0379H ORAL,20H OUTDX,AL;输出读出允许信号,即:使OE=1 MOVDX,0378H;8255A口地址送DX INAL,DXMOVDATA,AL;将转换结果送DATA暂存下来ACALLT_LED;调用LED显示转换结果子程序ACALLT_SMG;调用数码管显示转换结果的十六进制形式RETI5.另用一片8255显示二进制结果,选用8255的A口用作输出控制字为80H,假设该片8255的地址范围为:0FF00H-0FF03H,则将A/D转换结果送发光二极管显示二进制数的程序如下:T_LEDPROC MOVDX,0FF03H MOVAL,80H; OUTDX, MOVDX,0FF00H;将8255A口地址送数据寄存器DX MOVAL,DATA;取转换结果 OUTDX RETT_LEDENDP6.送8279显示两位十六进制数T_SMGPROC MOVAL,DATAMOVBL,16DIVBL;转换结果的十六进制数形式的高位放AL,低位放AHLEABX,LED;送段码偏移地址,待查的数值已在AL(高位)中XLAT;查表,查出来的段码值放在AL中MOVLED_DATA1,AL;暂存低位对应段码MOVAL,AHXLAT;查高位对应的段码MOVLED_DATA2,AL;暂存高位对应段码ACALLT_SMGXS;调8279数码管显示子程序RETT_SMGENDP7.8279显示两位十六进制数8279芯片是一种通用的可编程键盘和显示接口器件。设8088的地址线A15接8279的作片选,A0接8279的A0作命令和数据的选择,设系统时钟频率为1MHZ,命令口的地址:7FFFH,状态口地址为:7FFEHT_SMGXSPROC MOVDX,7FFFH ;指向命令状态口地址,=0,A0=1 MOVAL,0D1H ;清除命令 OUTDX,AL ;命令字送入WAIT: INAL,DX ;读入状态字 ANDAL,80H ;判断最高位DU(清除命令执行状态标志)的状态 JNZWAIT ;若DU=1,表明命令正在执行 MOVAL,2AH ;送分频系数 OUTDX MOVAL,90H ;写显示RAM命令,AI=1,地址自动增加,初始地址为0 OUTDXLEABX,LED ;将数码管段码存放位置的偏移地址送BX MOVAL,LED_DATA1 ;将转换后的十六进制形式结果的高位送ALXLAT ;执行查表 OUTDX,AL ;送出查得结果 MOVAL,LED_DATA2 ;将转换后的十六进制形式结果的低位送AL XLAT ;查表,得出低位数值对应的段码 OUTDX,AL ;将低位数值对应段码送到数码管 RETT_SMGXSENDP ;说明:虽然每次向8279送段码时地址都会自动增加,但由于每次调用送段码子程序送段码之时,都会执行MOVAL,90H,OUTDX,AL,指令,即:每次都对送入的地址进行初始化,也就是说,每次送的段码和数码管始终是对应的。二、简易波形发生器设计设计任务(1)利用8279为键盘、显示核心构成人机接口,设计一个简单的波形发生器,该波形发生器可以输出三角波、锯齿波、方波、矩形波、阶梯波和正弦波。(2)各种波形参数,例如:波形类别、频率、振幅(小于5V)、矩形波的占空比、锯齿波正向斜坡持续时间、阶梯波每个阶梯的持续时间等均需要用户从键盘输入,规定如下:A键:设置波形类型,其中:1键代表三角波,2键代表锯齿波,3键代表方波,4键代表矩形波,5键代表阶梯波,6键代表正弦波B键:设置波形频率,单位HzC键:设置波形幅度,单位mVD键:设置矩形波的占空比(百分比的分子)E键:设置锯齿波正向斜坡持续时间与周期之比(百分比的分子)F键:设置阶梯波每个阶梯的持续时间与周期之比(百分比的分子)G键:确认参数更新,使系统按最新设置的参数产生波形H键:终止程序(3)利用用户输入的参数控制DAC0832输出符合要求的波形,变换后的波形接到示波器上显示出来(4)按键的检测程序要求消抖功能设:命令口地址为7FFFH,数据口地址为7FFEH,系统时钟频率为1MHZ程序设计如下:预定义部分DATASEGMENTFRGDB? ;波形频率AMPDB? ;波形幅值ZKBDB? ;波形占空比JCBDB? ;锯齿波正向斜坡持续时间与周期之比JTBDB? ;阶梯波正向斜坡持续时间与周期之比TIME1DW?;暂存用于延时时间控制的数值,为一个字节的长度,用于上升部分TIME2DW?;暂存用于延时时间控制的数值,为一个字节的长度,用于下降部分BTYPEDB? ;波形类型号DADB? ;暂存输入幅值对应的DAC0832输入的数字量,参考电压为5VDATAENDSCODESSEGMENTASSUMECS:CODES,DS:DATA,SS:SSEGMAIN:MOVAX,DATAMOVDS,AXMOVAX,CODESMOVSS,AX MOVDX,7FFFH ;指向命令口 MOVAL,0D1H ;清除命令 OUTDXLOOP1: INAL,DX ;读入状态字 ANDAL,80H CMPAL,80H ;清除等待 JELOOP1 ;若清除命令正在执行则等待 MOVAL,00H ;键盘、显示命令,编码扫描键盘,双键锁定 OUTDX MOVAL,2AH ;时钟十分频 OUTDXLOOP2: INAL,DX ;读入8279中键入数据情况 ANDAL,0FH ;只取状态字低4位,D0D1D2为键所在的行号,若有键按下,则行号不为零 JZLOOP2 ;若无键按下时等待 INAL,DX ;命令读入 ANDAL,0FH ;消抖 JZLOOP2 MOVAL,40H ;键盘扫描方式时,读取数据按先进先出原则读出,与D0-D3无关,该命令字的低四位可为任意值,此时读RAM命令字可设为40H OUTDX,AL ;命令送入 MOVDX,7FFEH ;指向数据口地址 INAL,DX ;读入键值 ANDAL,3FH ;键值情况状态的CNTL、SHIFT没用到,屏蔽这两位 MOVBL,08H DIVBL ;行号放AH、列号放AL MOVBH,AL ;暂存列号 MOVAL,AH MULBL ADDAL,BL ;得键码 CMPAL,OAH JEKEY_A AJMPTEST1TEST1: CMPAL,0BH JEKEY_B AJMPTEST2TEST2: CMPAL,0CH JEKEY_C AJMPTEST3TEST3: CMPAL,0DH JEKEY_D AJMPTEST4TEST4: CMPAL,0EH JEKEY_E AJMPTEST5TEST5: CMPAL,0FH JEKEY_F AJMPTEST6TEST6: CMPAL,10H JEKEY_G AJMPTEST7TEST7: CMPAL,11H JEKEY_H AJMPLOOP2 ;第一个键值必须在A-H范围之内,若第一个键不在A-H范围内,则重读键值;为后面再次查询键值编写一个键值查询子程序K_SCANPROC INAL,DX ANDAL,0FH JZK_SCAN MOVAL,40H OUTDX MOVDX,7FFEH INAL,DX ANDAL,3FH MOVBL,08H DIVBL MOVBH,AL MOVAL,AH MULBL ;键号暂存于AL RETK_SCANENDP下面编写第一次按下的键在A-H之间时的处理程序KEY_A: ;用于获取设置波形用的键号 ACALLK_SCAN MOVBTYPE,AL ;将波形类型号送BTYPE AJMPLOOP2;返回继续读取波形参数设置功能号KEY_B: ACALLK_SCAN;扫描频率值的十位 MOVCH,AL CALLK_SCAN ;扫描频率的个位 MOVCL,AL MOVBL,0AH MOVAL,CH MULBL ADDAL,CL MOVFRQ AJMPLOOP2 ;返回继续读取波形参数设置功能号KEY_C: ;扫描幅值 CALLK_SCAN MOVAMP,AL AJMPLOOP2;返回继续读取波形参数设置功能号KEY_D: ACALLK_SCAN;扫描矩形波占空比的十位 MOVCH,AL CALLK_SCAN ;扫描矩形波占空比的个位 MOVCL,AL MOVBL,0AH MOVAL,CH MULBL ADDAL,CL MOVZKB,AL ;矩形波的占空比暂存 AJMPLOOP2;返回继续读取波形参数设置功能号KEY_E: ACALLK_SCAN;扫描锯齿波正向斜坡持续时间与周期之比的十位 MOVCH,AL CALLK_SCAN ;扫描锯齿波正向斜坡持续时间与周期之比的个位 MOVCL,AL MOVBL,0AH MOVAL,CH MULBL ADDAL,CL MOVJCB,AL ;锯齿波正向斜坡持续时间与周期之比暂存 AJMPLOOP2;返回继续读取波形参数设置功能号KEY_F: ACALLK_SCAN;扫描阶梯波每个阶梯持续时间与周期之比的十位 MOVCH,AL CALLK_SCAN ;扫描阶梯波每个阶梯持续时间与周期之比的个位 MOVCL,AL MOVBL,0AH MOVAL,CH MULBL ADDAL,CL MOVJTB,AL ;阶梯波每个阶梯持续时间与周期之比暂存 AJMPLOOP2;返回继续读取波形参数设置功能号KEY_G: CMPBTYPE,01H;判断设置的波形类型是否为三角波 JEXS_SJB ;若是则转三角波显示子程序 JMPBX_LX1BX_LX1: CMPBTYPE,02H;判断设置的波形类型是否为锯齿波 JEXS_JCB ;若是则转锯齿波显示子程序 JMPBX_LX2BX_LX2: CMPBTYPE,03H;判断设置的波形类型是否为方波 JEXS_FB ;若是则转方波显示子程序 JMPBX_LX3BX_LX3: CMPBTYPE,04H;判断设置的波形类型是否为矩形波 JEXS_JXB ;若是则转矩形波显示子程序 JMPBX_LX4BX_LX4: CMPBTYPE,05H;判断设置的波形类型是否为阶梯波 JEXS_JTB ;若是则转阶梯波显示子程序 JMPBX_LX5BX_LX5: CMPBTYPE,05H;判断设置的波形类型是否为正弦波 JEXS_ZXB ;若是则转正弦波显示子程序KEY_H: HLT;程序结束设DAC0832工作在单缓冲方式,端口地址为0278H。电压为5V时对应的输入数字量为255,则对于任一电压值AMP,其相应的输出数字量计算公式:。对于输出频率的控制,采用对输出数字量改变一个单位之后的延时子程序的延时时间来决定。下面编写产生不同波形的程序:三角波:三角波每一阶梯的延时时间delay与幅值、频率的关系式如下:,设系统的机器周期为1us,则delay的最小值为1us,由上述表达式知,当波形幅值为1v时,波形最大频率为:9804XS_SJB: ;按设置显示三角波子程序 MOVDX,0278H;送DAC0832的地址 MOVAX,AMP MOVBX,FRQ MULBX ;由上述推导已知FRQ的最大值为9804,而波形幅值最大为5V,可知二者相乘之积不会超过65536,即DX中的值为零,结果只在AX中 MOVTIME,AX ;暂存延时程序参数 MOVAL,51 ;由输入的波形幅值(单位V)计算对应折算后的0832的输入数字量的最大值 MOVBL,AMP MULBL MOVDA,AL ;暂存0832的输入数字量的最大值SJB: MOVAL,0NEXT1: INCAL
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 库房操作安全教育
- 2025版简易民间借款合同范本
- 2025石油开采合作协议范本(合同版本)
- 护理品管圈课件
- 2025年小学教师资格考试《综合素质》教育法规案例分析题历年真题回顾与答案解析试卷
- 2025小麦收购合同范本模板
- 幼儿教育的主题班会
- 2025-2030置物架行业市场深度调研及发展趋势与投资战略研究报告
- 2025-2030罐头产业政府战略管理与区域发展战略研究报告
- 2025-2030纤维素胶市场发展现状调查及供需格局分析预测报告
- 河南退役军人专升本计算机真题答案
- 2024年10月自考13683管理学原理中级试题及答案含评分参考
- 《中国溃疡性结肠炎诊治指南(2023年)》解读
- 叉车日常维护保养检查记录表
- 施工总平面布置和临时设施布置技术标
- 曼昆《经济学原理》(微观经济学分册)第8版 全部答案
- Q∕GDW 12070-2020 配电网工程标准化设计图元规范
- (精心整理)小学英语特殊疑问句练习(带答案)
- 旋片泵设计说明书
- 小学一年级100以内加减法口算题(五篇)
- 广西壮族自治区建筑装饰装修工程消耗量定额(2013版)
评论
0/150
提交评论