西北工业大学微机原理实验课_第1页
西北工业大学微机原理实验课_第2页
西北工业大学微机原理实验课_第3页
西北工业大学微机原理实验课_第4页
西北工业大学微机原理实验课_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、微机原理实验课,王虎朝 西北工业大学计算机实验教学中心,微机原理实验课有关事项说明,实验共20学时,分七次:软件4次,硬件3次。 实验报告完成后,以小班为单位按学号顺序排放,在下次试 验前两天放在 B309-2。实验报告每次批改三分之一。 实验用计算机系统为Windows98,计算机C盘设置为保护方式,只有D盘对学生开放。因此,编写的程序只能存在D盘。,微机原理实验成绩评定办法,1、实验课程为单独设课,实验成绩按百分制给出。 2、考核内容及各部分比例: 实验内容完成质量和进度占60%, 实验报告占40%(批改两次,每次10分,余5次每完成一次4分)。 3、学生实验出勤

2、和纪律(旷课一次扣15分,迟到一次扣110分,违纪一次扣15分。 4、有事请假同学持假条,有病请假同学持医院诊断证明,在微机原理实验室上班且有空闲设备的情况下,取得上课老师允许后,即可进行实验,实验完成后写一实验内容说明,请辅导老师签字,交原带课老师即可记入成绩。,汇编语言调试环境使用说明,利用Editplus和汇编相关软件建立起基于Win98平台的汇编语言集成调试环境,对我们学习汇编语言、开发汇编软件将十分方便,它将我们学习汇编程序时的编辑、编译、调试等工具集成于一体。,1从源程序列表中打开要编辑、调试的文件,主要菜单的使用,对源程序的编译和连接,对目标程序的调试,帮助文件,源程序调试软件的

3、使用,源程序窗口,寄存器窗口,命令行窗口,调试功能键: F2:寄存器窗口的开/关 F3:在源程序方式和汇编方式之间切换 F4:切换到输出屏幕 F5:执行到下一个断点或到程序结束(没断点) F6:激活各调试窗口 F7:在光标所在行设置一个临时断点,并执行到该行 F8:执行跟踪命令 F9:在光标所在行设置或清除一个断点(双击鼠标左键功能相同) F10:执行Program Step命令 PgUp:上卷一页 PgDn:下卷一页 Home:上卷到文件或命令缓冲区顶部 End: 下卷到文件或命令缓冲区底部,软件实验部分,本部分共进行4次实验,实验内容如下:,实验一 BCD码的运算,一实验目的 1.熟悉在E

4、ditplus集成环境下建立、汇编、链接、调试和运行汇编语言程序的全过程。 2.掌握汇编语言程序结构中数据段、堆栈段、代码段定义及内存分配方法。 3.学会DEBUG调试程序主要命令的使用方法。 4.掌握用组合BCD码表示数据的方法,并熟悉其加、减、乘、除运算。 二实验内容 1.多位十进制数加法。 2.两位十进制数乘法。 三实验要求 1.多位十进制数加法:在内存中以DATA1和DATA2为首址,各分配5个字节单元,分别存入两个8位组合BCD码数据(低位在前),将两数相加,结果送回到DATA2处。 2.两位十进制数乘法:将被乘数和乘数以组合BCD码形式分别存放于DATA1和DATA2定义的节单元中

5、,经乘法运算,乘积存入DATA3定义的两个内存单元中。 3.用DEBUG调试程序、查看运算结果,进行手工验证;并且用DEBUG修改数据,重新执行。,关于BCD码、十六进制数的说明,BCD码用4位二进制编码表示一个十进制数,又称二十进制数。由于这4位二进制数 的权值为8421,故也称BCD码为8421码。在计算机里,用一个字节的低4位表示一位 十进制数非组合BCD码;用一个字节表示两位十进制数组合BCD码。,在计算机里,所有的运算都是按二进制进行的,运算结果是二进制数(即十六进制数) 。为了把十六进制运算结果转换成十进制,汇编语言中引进了组合BCD码加法调整指令DAA和减法调整指令DAS。,DA

6、A 加法的十进制调整指令 该指令之前要执行ADD或ADC。 调整方法:若AF为1,或AL中的低4位是十六进制的A F,则AL内容加06H,AF置1; 若CF为1,或AL中的高4位是十六进制的A F,则AL内容加60H,CF置1。 AF 辅助进位标志 CF进位标志,多位十进制数加法,.model small .data data1 db 11h,22h,33h,44h,00h data2 db 99h,88h,77h,66h,00h .code .startup mov si,offset data1 ;设指针 mov di,offset data2 clc ;清进位 mov cx,5 ;设加法

7、次数 lop: mov al,si ;取第一加数 adc al,di ;取第二加数 daa ;十进制调整 mov di,al ;结果存入指定单元 inc si ;指针加1 inc di loop lop ;循环 .exit end,流程图:,开始,清进位,设加法次数,十进制调整; 部分和回送,指向下单元数,AL AL+第二加数+CF,CX-1=0?,结束,Y,N,两位十进制数乘法 两位十进制数乘法流程图:,开始,分离出第一乘数的“个位”,分离出第一乘数的“十位”,第一乘数的“十位”移到 “个位”后,再乘 10,合成得到16进制 的第一乘数,BCD码转换成16进制数,1,1,清进位,第二乘数做加

8、法次数,十进制调整,AL与AH内容交换,AL与AH内容交换,十进制调整,CX-1=0?,N,Y,存储结果,结束,两位十进制数乘法程序示例,.model small .586 .data data1 db 34h data2 db 56h data3 dw 1 dup (?) .code .startup mov bl,data1 ;第一乘数转换成16进制数 mov bh,bl and bh,0fh and bl,0f0h mov cL,4 shr bl,cL mov al,10 mul bl add al,bh movzx cx, al ;置加法次数计数器,mov bl,data2 ; 第二乘

9、数做BCD 加法,加第一乘数次 mov ax,0 clc lop: add al,bl daa xchg ah,al adc al,0 daa xchg ah,al loop lop mov data3,ax;积送乘积存储单元 nop nop nop .exit end,一、实验目的 掌握循环结构程序的设计、调试。 二、实验内容 1 多字节无符号数加法。 2 设计一软件延时器,并在屏幕上显示软件延时倒计时过程。 三、实验要求 1多字节无符号加法:在DATAS中存放10个双字节无符号数, 用循环结构设计程序,通过程序运算,把这10个双字节无符号 数相加,其和存入紧邻加数之后的四个单元中。 2软件

10、延时器:做一延时约1秒的软件延时器,在屏幕上按9、 8、0 顺序显示软件延时倒计时过程。 3. 修改实验2,做一延时约1秒的软件延时器,在屏幕上按99、 98、00 顺序显示软件延时倒计时过程。,实验三 循环结构程序,有关问题的说明,循环程序的三个组成部分: 循环初始状态设置。设置循环次数、为循环体正常工作建立初始状态等。 循环体。循环工作的主体,包含循环的工作部分和修改部分。循环的工作部分是为完成程序功能而设计的程序段;循环的修改部分是为保证每一次重复时,参加执行的信息能发生有规律的变化而建立的程序段。 循环控制部分。选择一个循环控制条件来控制循环的运行和结束。 循环程序的结构:,循环初始状

11、态,循环控制条件,循环体,Y,N,循环初始状态,循环体,循环控制条件,Y,N,DO-WHILE结构,DO-UNTIL结构,子程序结构: procedure name PROC Attribute RET procedure name ENDP Attribute,NEAR 调用程序和过程在同一个代码段中,FAR 调用程序和过程不在同一个代码段中,系统功能调用:系统功能调用是DOS为方便汇编语言编写而提供的一组约80个功能调用的常用子程序,它分为设备管理、文件管理和目录管理等几类。DOS规定用软中断指令 INT 21H 进入各功能调用子程序的总入口,再为每个功能调用规定一个功能号,以便进入相应各

12、自子程序的入口。系统功能调用的使用方法:,EX1:从键盘输入单字符 MOV AH,01H ;1号功能调用 INT 21H 将键盘输入字符的ASCII码送到 AL。 EX2:从键盘输入字符串 BUF DB 10 DUP(?) LEA DX,BUF MOV AH,0AH ;0A号功能调用 INT 21H 将键盘输入的字符串写到 RAM 中去,击 回车键表示字符串结束。字符数与予留 空间的关系为:少补零多丢失。 EX3:输出单字符 MOV DL,M MOV AH,02H; 2号功能调用 INT 21H 将 DL 中字符从屏幕上显示出来。,EX4:输出字符串 BUF DB Thank you MOV

13、DX,OFFSET BUF MOV AH,09H;9号功能调用 INT 21H 将 指定 RAM 缓冲区中的字符串从屏幕 上显示出来。 为字符串结束符。 EX5:直接控制台输入/输出单字符 MOV DL,0FFH;DL=0FFH时, MOV AH,06H; 6号功能调用 INT 21H; 将键盘输入字符 送到 AL 中。 MOV DL,M; DL 0FFH时, MOV AH,06H; 6号功能调用 INT 21H; 将 DL 中字符送到 屏幕上显示。,多字节无符号数加法,.MODEL SMALL .586 .DATA DATAS DW 1111H,2222H,3333H,4444H,5555H

14、 DW 6666H,7777H,8888H,9999H,0AAAAH RESULT DD 1 DUP(?) .CODE .STARTUP MOV SI,OFFSET DATAS;设指针 MOV CX,10;累加次数 MOV EAX,0;清累加器 LOP: MOV BX,SI;取加数到BX MOVZX EBX,BX ;将BX扩展成32位 ADD EAX,EBX; 加 INC SI;改指针 INC SI LOOP LOP;循环加 MOV RESULT,EAX;存结果 .EXIT END,开始,清进位,将BX扩展为32位,SI 指向下一加数,CX-1=0?,N,Y,存结果,结束,软件延时器,.mod

15、el small .data data db 20h,20h,20h,20h,20h,39h,0dh,$ .code .startup mov cx,0Ah; 设循环次数 lop:mov ah,09h;显示功能调用 lea dx,data int 21h call near ptr delay;调用延时子程序 dec data+5;修改显示数字 loop lop .exit Delay proc near uses cx ;延时子程序 mov bx,06ffh ;设第二时常数 Delay1 :mov cx,0h loop $ ;自身循环CX次 dec bx ;第二时常数减1 jnz delay

16、1 ;不为零循环 ret Delay endp end,开始,字符串 显示功能调用,延时子程序调用,显示数字修改,CX-1=0?,N,Y,结束,主程序流程:,延时子程序流程:,实验四 排序程序,一实验目的 1学习无符号数比较大小指令; 2掌握多重循环编程方法; 3掌握汇编语言编写排序程序的思路和方法。 二实验内容 1单字节无符号数排序。 2去极值滤波。 三实验要求 1单字节无符号数排序:DATANUM单元开始存放单字节无符号数,表示要排序数据 的个数,DATAS单元开始存放要排序的数据,数据个数至少10个,程序运行之后,这些数据按照由小到大的顺序仍然存放于DATAS单元开始的位置。 2 去极值

17、滤波:某控制系统为了抗干扰,采用去极值滤波法处理采集数据,取连 续6个A/D采样值(12位双字节,低12位),要求去掉最大值和最小值,将 余下4个数求平均值,用该平均值代表当前时刻系统状态的真值。试编一程序完 成这个滤波过程。 3. 扩展1:对实验2的排序结果,在屏幕上显示出来。 4。扩展1:对实验2中预排序的数用键盘输入,排序结果在屏幕上显示出来。,单字节无符号数排序,流程图:,开始,数据指针 SI 置 0,前数与后数比较,前数后数,前、后数交换,数据指针 SI 指向下一数,数据指针 SI 指向下一数,Y,N,BL-1,CX-1=0?,CX-1=0?,N,N,Y,Y,ZF=1?,N,结束,Y

18、,.model small .586 .data datanum db 10 datas db 21h,13h,4h,5h,7h db 6h,8h,20h,9h,11h .code .startup mov bl,datanum dec bl lop0: movzx cx,bl mov si,0 lop: mov al,datassi cmp al,datassi+1 ja jh inc si loop lop jmp next,jh: xchg al,datassi+1 mov datassi,al inc si loop lop next: dec bl jz finish jmp lop

19、0 finish: nop .exit end,去极值滤波,.model small .586 .data datanum db 6 datasdw 0123h,0abch,0234h dw 0345h,0456h,0567h .code .startup call px ;排序 mov si,offset datas+2 ;掐头去尾送指针 mov cx,4 ;送累加次数 clc ;清进位 mov ax,0 ;取首数 qh:adc ax,si ;累加 inc si inc si loop qh shr ax,2 ;除4 mov datas,ax ;存结果到DATAS首位 .exit,pxpro

20、c near mov bl,datanum;取字长 dec bl lop0: movzx cx,bl;送比较次数 mov si,0 lop: mov ax,datassi;送前数 cmp ax,datassi+2;与后数比较 ja jh;前大于后,转交换 inc si inc si;指针加 1 loop lop;循环比较 jmp next;一轮排序完 jh: xchg ax,datassi+2;交换 mov datassi,ax inc si inc si loop lop next: dec bl;修改比较次数 jz finish jmp lop0 finish: nop;结束 ret px

21、 endp end,实验五 分支程序,一、实验目的 掌握分支程序编程方法,复杂分支程序的查表法等。 二、实验内容 1、 学生课程成绩分段统计。 2、 键盘及屏幕显示功能调用。 三、实验要求 1、 学生课程成绩分段统计:用单字节表示每个学生的学号,学生的课程成绩用两位十进制数表示(最低0分,最高99分),规定0F0H表示作弊,0F1H表示缺考,0FFH为一组学生成绩的结束符。学生成绩在内存的存放形式为“学号,成绩”,每个学生占两个字节,从内存SCORE为首址开始存放。要求学生人数不少于10个,试编程序,按0 9、10 19、20 29、80 89、90 99及作弊、缺考等12种情况把学生的课程成

22、绩进行分段统计,将统计结果存入以COUNT为首址的12个单元中。 2、试编一程序扫描键盘,当B键按下时,在屏幕上显示09循环计数;S键按下时停止计数;再按B键继续计数过程。E键按下时退出程序。 3、用DEBUG调试程序预置数据和查看程序运行结果,以验证程序正确性。,学生课程成绩分段统计,开始,设置学号、成绩指针,取学号,取成绩,是结束标志?,取十分位,并将十分值扩展为16位送DI,对DI所指统计区段统计值加1,是作弊?,是缺考?,修改指针,CX-1=0?,1,1,作弊统计区段统计值加1,缺考统计区段统计值加1,结束,Y,Y,Y,Y,N,N,N,N,.model small .586 .data

23、 score db 1,10h,2,20h,3,30h,4,40h,5,50h,6,77h,7,70h db 8,80h,9,90h,10h,08,11h,0f0h,12h,0f1h,0ffh count db 12 dup(?) .code .startup mov cx,30;送统计上限 mov si,0;SCORE 统计指针 statistic: mov al,scoresi ;取学号 cmp al,0ffh ;判是否为结束 je sta_end;转统计结束 mov bl,scoresi+1;取成绩 cmp bl,0f0h;是否作弊 je fake;是,转作弊处理 cmp bl,0f1h

24、;是否缺考 je miss;是,转缺考处理 shr bl,4;取十分位 movzx di,bl ;将十分值扩展为16位送DI inc countdi ;相应区段统计值加1 down: inc si ;改指针 inc si loop statistic;循环 sta_end:nop;结束 .exit,fake: mov di,10;作弊处理 inc countdi jmp down miss: mov di,11;缺考处理 inc countdi jmp down end,键盘及屏幕显示功能调用,开始,显示提示信息,置处理指针为“停止”,调延时、键盘扫描程序,有键动?,转处理指针处,B 键?,S

25、 键?,E 键?,转处理指针处,结束,置处理指针为“计数”,置处理指针为“停止”,N,Y,Y,Y,Y,N,N,N,处理指针 为“计数”,处理指针 为“停止”,计数显示,延时、键盘扫描程序,子程序定义,CX-1=0?,N,Y,监测键动,有键动?,做键动标志BX=1,N,Y,.model small .data Mess1 db press b button - count,0dh,0ah mess2 db press s button - stop,0dh,0ah Mess3 db press e button - exit,0dh,0ah,$ count db 20h,20h,20h,20h,

26、20h,30h,0dh,$ .code .startup mov ah,09h;显示提示信息 mov dx,offset mess1 int 21h mov si,stop;设处理指针 scan: call near ptr delay ;调延时、键扫程序 or bx,bx;判有无键动 jnz scan1;有键动,转键处理 jmp si;无键动,转当前处理程序 scan1: cmp al,b ;键处理程序 je b_proc cmp al,s je s_proc cmp al,e je e_proc call delay jmp si b_proc: mov si,count_;B键处理 jm

27、p scan s_proc: mov si,stop;S键处理 jmp scan e_proc: nop;E键处理 nop .exit,count_: inc count+5;修改显示数字 mov al,3ah;比较超限 cmp al,count+5 ja down;若不超限,调显示 mov count+5,30h;超限,设启始值 down: mov ah,09h;显示功能调用 lea dx,count int 21h jmp scan stop: jmp scan nop Delay proc near uses cx;延时子程序 mov bx,380h;设第二时常数 delay1: mov

28、 cx,0h loop $;自身循环CX次 mov dl,0ffh;监测键动 mov ah,06h int 21h jnz key_ret ;若有键动,延时终止,转键处理 dec bx;第二时常数减1 jnz delay1;不为零循环 jmp delay_ret key_ret: mov bx,1;做键动标志 delay_ret: ret Delay endp end,硬件实验部分,本部分共进行3次实验,实验内容如下: 1 实验六 并行接口技术实验 2 实验七 8254定时/计数器实验 3 实验九 A/D转换实验 (下面根据实验台实物介绍实验台),特别说明:为了方便实验,实验台设计时已将实验用

29、相关器件的地 址线、数据总线及除片选(CS)外的控制线连接到位,并在每一 个实验电路附近予留有若干信号连线插孔(或插针排)。实验时 只要将相应插孔用单股导线(或相应插针排用扁平电缆)对应相 连即可组成完整的实验电路。在给出的实验电路图中,线路所 带小圆圈即表示连线插孔。各芯片的片选(CS)可用单股导线连 接,也可通过将8位铅笔开关的对应位置ON连接。 硬件实验注意事项: 1.在实验台断电条件下,才能用单股导线(或扁平电缆)连接电路; 2.线路连接完成、检查确认没有错误后,再开通实验台电源; 3.用单股导线连接电路时,要将单股导线线头整直,并确认线头没有 断裂; 4.实验完成后,关断实验台电源,

30、再抓住导线(或扁平电缆)的根 部,一根一根垂直拔掉连接导线(或扁平电缆) ,并把连接导线 、电缆整好放入线盒。,实验六 并行接口技术实验,一实验目的 1.掌握8255A并行接口的基本使用方法。 2.理解数码管扫描显示原理,学习数码管扫描显示方法。 二实验内容 1.用8255A作为并行接口,从8255A的一个端口输入开关量到CPU或内存,再将这一数据通过数据总线和8255A的另一个端口扫描输出到数码管。设8255A的A口为输入方式,接逻辑电平开关;8255A的B口为输出方式,通过MC1413驱动器接数码管的位选端;数码管的字划端通过74HC573与数据总线相连;逻辑电平开关K1K6按16编号。试

31、编一程序,用一位数码管指示出逻辑电平开关为“0”状态的开关编号,即当1号逻辑电平开关为“0”时,所选数码管显示“1”,2号逻辑电平开关为“0”时,数码管显示“2”,6号逻辑电平开关为“0”时,数码管显示“6”。所有逻辑开关的初始状态为“1”。 2.设8255A的B口为输出方式,通过MC1413驱动器接数码管的位选端;数码管的字划端通过74HC573与数据总线相连。试编一动态扫描程序,让6个数码管“同时”点亮,显示“1、2、3、4、5、6”。 三实验电路及设计 1.实验电路图,2.实验连线 (1)逻辑电平开关输出孔K1K6对应连接到8255A的PA0PA5; (2)8255A的PB0PB5对应连

32、接到数码管的位选端SM0SM5; (3)数据总线D0、D1、D2、D3、D4、D5、D6、D7对应连接到数码 管的字划端a、b、c、d、e、f、g、dp; (4)8255A的片选端CS8255连到译码控制单元的 CS1( 0C800H); (5)74HC573的使能端smglt (CS573)连到译码控制单元的 SMGLT (C820H)。 3.8255A的端口地址 PA口:C800H,PB 口:C801H,PC口:C802H,控制寄存器:C803H 。 4.数码管编码表 “0”-3FH “1”-06H “2”-5BH “3”-4FH “4”-66H “5”-6DH “6”-7DH “7”-0

33、7H “8”-7FH “9”-6FH “A”-77H “B”-7CH “C”-39H “D”-3EH “E”-79H “F”-71H,有关问题的说明,数码管(共阴):,DP,DP,共阴,地,不闭合,数码管就点不亮,多个数码管扫描显示:,多个数码管扫描显示:,限流电阻,锁存器,JM3、JM2、JM1谁为,谁连接的数码管就显示锁存器当前锁存的值,所谓扫描显示是: 对个数码管: .给锁存器送第个数码管显示内容,而后第个数码管公共端接低,延时 .给锁存器送第个数码管显示内容,而后第个数码管公共端接低,延时 .给锁存器送第个数码管显示内容,而后第个数码管公共端接低,延时 第步后,再从开始,周而复始。,那

34、么, JM3、JM2、JM1是互斥的了!,连接数据总线D7D0,驱动器,实验 6.1,74HC573锁存器,A口,K6 K5 K4 K3 K2 K1 开关,A B C D E F G DP,A口,开始,初始化8255,点亮一位数码管,读键盘,有键?,读开关量,并取反,位扫描,确定开关号,取对应开关号的字型码,输出对应的数字,结束,; CS8255 - CS1 ; CS573 - SMGLT ; k1.k6 - PA0.PA5 ; SM0.SM5-PB0.PB5 ; D0.D7-A.B.DP .model small .586 p8255 equ 0C800h ;片选地址 p_ctl equ 9

35、0h ;8255控制字 s_l_a equ 0C820h ;573锁存地址 .data table db 3fh,06h,5bh,4fh,66h ;0,1,2,3,4字型 db 6dh,7dh,07h,7fh,6fh ;5,6,7,8,9 .code .startup mov dx , p8255+3 ;8255初始化 mov al , p_ctl out dx,al mov dx , p8255 +1 ;点亮数码管SM0 mov al, 01h out dx,al,lop: mov ah,06h ;键入“e”结束执行 mov dl,0ffh int 21h cmp al,e je scan_

36、end mov dx,p8255 ;读开关 in al,dx not al movzx ax,al bsf bx,ax ;从ax低位起扫描,将第一个 ; 为1的位号存BX xchg al,bl mov bx,offset table ;读字型码 xlat ;查表,BX+AL送AL mov dx,s_l_a;输出对应的数字 out dx,al jmp lop ;循环扫描 scan_end: .exit end,实验 6.2,限流电阻,Dbus D7D0,8255,MC1413驱动器,B口,Dbus D7D0,SMGLT,CS8255,74HC573锁存器,A B C D E F G DP,开始,

37、初始化,查表取显示数字字型码,显示字型码送锁存器(输出),取对应数码管字位、并输出,+(下一扫描位置),扫描位数?,调延时,读键盘,有键动?,结束,延时程序流程见前,; CS8255 - CS1 ; CS573 - SMGLT ; SM0.SM5-PB0.PB5 ; D0.D7-A.B.DP ; .model small p8255 equ 0C800H ;片选地址 p_ctl equ 10010000B;8255控制字 s_l_a equ 0C820H ;573锁存地址 .data table db 3FH,06H,5BH,4FH ,66H ;0,1,2,3,4 db 6DH,7DH,07H

38、,7FH ,6FH ;5,6,7,8,9 .code .startup mov dx,p8255+3;发控制字 mov al,p_ctl out dx,al mov cl,1;设扫描位置,lop:mov al,cl;取显示数字 mov bx,offset table;读字型码 xlat mov dx,s_l_a;输出字型码 out dx,al mov al,10000000b rol al,cl ;左循环移位 mov dx,p8255+1 out dx,al ;送B口控制的数码管位 inc cl cmp cl,6 jbe down;若显示位置大于等于6, ;返回启始位置1 mov cl,1 d

39、own:call delay mov ah,06;判有键动,跳出循环 mov dl,0ffh int 21h jnz scan_end jmp lop;循环扫描 scan_end:nop .exit,delayproc near uses cx;延时子程序 mov bx,02h delay1:mov cx,0h loop $ dec bx jnz delay1 ret delayendp end,实验七 8254定时/计数器实验,一实验目的 1.掌握8254定时/计数器的基本使用方法。 2.了解8254定时/计数器利用级连扩大计数范围的方法。 3.了解多I/O芯片协同工作的原理和方法。 二实验

40、内容 1.将8254定时器0设置为方式2(分频),定时器1设置为方式3(方波),定时器0的CLK0端接1M时钟,定时器0的输出脉冲作为定时器1的时钟输入。将定时器1的输出脉冲接在一个LED灯上或风鸣器上。编程使8254工作,观察灯的状态或风鸣器声响。 2.用8254做秒信号源,用8255A控制交通灯的红绿变化,完成一交通灯控制系统,使每10秒切换一次通行方向。 三实验电路及设计 1 .实验电路图,2.“实验内容1”实验连线 (1)8254的GATE0、GATE1接高电平; (2)8254 T0的CLK0接1M时钟孔; (3)8254 T1的CLK1接T0的OUT0; (4)8254的片选端CS

41、8254连到译码控制单元的 CS2; (5)8254 T1的OUT1接LED灯或风鸣器的输入端BJ孔。 3.“实验内容2”实验连线 以下连线假设8255A的A口为输入方式、B口为输出方式,8255A的PA1 连接8254 T1的OUT1,8255A的B口控制交通灯的八只LED灯。 (1)连线同“实验内容1”的(1)(4); (2)8254 T1的OUT1接8255A的PA1孔; (3)8255A的PB7PB0对应连接到交通灯的 RW、GW、RN、GN、RE、GE、RS、GS灯 ; (4)8255A的片选端CS8255连到译码控制单元的CS1; (5) JTD接高电平。,4.8254和8255A

42、的端口地址 8254的端口地址: 定时器0分频系数寄存器 0C804H , 定时器1分频系数寄存器 0C805H , 定时器2分频系数寄存器 0C806H , 控制寄存器 0C807H 。 8255A的端口地址: PA口:0C800H ,PB 口:0C801H,PC口:0C802H, 控制寄存器:0C803H。,8254,OUT GATE CLK T0,Dbus D7D0,CS8254,CLK =1MHz,OUT GATE CLK T1,OUT GATE CLK T2,Vcc,实验 .1,;cs8254-CS2 ;clk0 - 1M ;out0 -CLK1 ;out1 - BJ 或 L1 ;g

43、ate0 - K1,令k1=1 ;gate1 - K2,令k2=1 .MODEL SMALL CS8254 EQU 0c804H T0_CTL EQU 00110100B ; 对T0 两次读写,先低后 ;高。 T0为方式2(分频) T1_CTL EQU 01110110B ;对T1 两次读写,先低 ;后高。 T1为方式3(方波) .DATA T0_DATA DB 0FFH,040H T1_DATA DB 0FFH,0,.CODE .STARTUP MOV DX,CS8254+3 ;初始化T0 MOV AL,T0_CTL OUT DX,AL MOV DX,CS8254 ;给T0低字节装计数初值

44、MOV AL,T0_DATA OUT DX,AL MOV AL,T0_DATA+1 ;给T0高字节装计数初值 OUT DX,AL MOV DX,CS8254+3 ;初始化T1 MOV AL,T1_CTL OUT DX,AL MOV DX,CS8254+1 MOV AL,T1_DATA ;给T1低字节装计数初值 OUT DX,AL MOV AL,T1_DATA+1 ;给T1高字节装计数初值 OUT DX,AL .EXIT END,实验 .,开始,8254 T0 初始化,给8254 T0装初值,8254 T 初始化,给8254 T装初值,8255初始化为A口入、B口出,8255 B口输出方向初值,

45、读8255 PA1、测试8255 PA1,PA1?,读8255 PA1、测试8255 PA1,PA1,控制换向 8255 B口输出方向值,检查键盘,有键盘动?,结束,;cs8254-CS2 ;clk0 - 1M ;out0 - clk1 ;out1 - 8255 的 PA1 ;gate0 - k1,令k1=1 ;gate1 - k2,令k2=1 ;JTDCS- k3,令k3=1” ;JTD-k4,令k3=1” ;cs8255 - CS1 ;8255(PB7 . PB0)- (RW、GW、RN、GN、RE、 ; GE、RS、GS ) .MODEL SMALL T8254 EQU 0c804H T

46、0_CTL EQU 00110100B T1_CTL EQU 01110110B p8255 equ 0c800H;片选地址 p_ctl equ 10010000B;8255控制字 .DATA T0_DATA DB 0FFH,040H T1_DATA DB 0FFH,0 dir_data DB 5ah,.CODE .STARTUP MOV DX,T8254+3;8254 T0 初始化 MOV AL,T0_CTL OUT DX,AL MOV DX,T8254 ;给8254 T0装初值 MOV AL,T0_DATA OUT DX,AL MOV AL,T0_DATA+1 OUT DX,AL MOV

47、DX,T8254+3 ;8254 T1初始化 MOV AL,T1_CTL OUT DX,AL MOV DX,T8254+1 ;给8254 T1装初值 MOV AL,T1_DATA OUT DX,AL MOV AL,T1_DATA+1 OUT DX,AL,mov dx,p8255+3;8255为A口入,B口出 mov al,p_ctl out dx,al mov dx,p8255+1;8255 B口输出方向初值 mov al,dir_data out dx,al bit_test0:;扫描上升沿 mov dx,p8255 in al,dx test al,2 ;测试8255 PA1,等待PA1=

48、0 jz bit_test1 ;PA1=0转 jmp bit_test0 ;PA1=1再测,bit_test1: mov dx,p8255 in al,dx test al,2 ; 测试8255 PA1,等待PA1=1 jnz dir_ctl ;有上升沿转 jmp bit_test1 ;上升沿没到再测 dir_ctl: mov al,dir_data ;方向控制 not al ;换向 mov dir_data,al mov dx,p8255+1 ;8255 B口输出方向值 out dx,al mov ah,06h ;检查键盘 mov dl,0ffh int 21h or al,al ;有键盘输

49、入转 jnz dir_end jmp bit_test0 dir_end: .EXIT END,实验九 A/D转换实验,一实验目的 学习模/数转换器使用方法,理解模/数转换原理。 二实验内容 1给A/D转换器输入一可调节的电压信号,假设该输入信号为一水塔的水位高度信号,请结合应用8255A接口芯片,编程完成以下功能:当水位低于PL时开报警、并打开水泵(点亮一指示灯),水位在PLPH之间时关闭报警,水位高于PH时开报警、并关闭水泵(指示灯熄灭)。设PH=0B4H (约3.5V),PL=66H (约2.0V)。 2用A/D转换器对电压信号V4连续采集4次,求出均值,放入指定单元;并把采集均值转换为电压,通过8255在数码管上显示。 三实验电路及设计 1.实验电路图,.“实验内容1”实验连线 以下连线假设8255A的A口为输出方式,8255A的PA6控制一LED灯、8255A的 PA7控制报警风鸣器。 (1)A/D转换单元的AD_S连接译码控制单元的AD_S (c828Hc82FH ); (2)A/D转换单元的AD_OE连接译码控制单元的AD_OE (c828Hc82FH ); (3)A/D转换器的IN0输入端连接到直流电压单元的Vdc孔。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论