1、安徽工业大学微机原理与接口技术实验报告下微机原理与接口技术实验报告下指导教师:陆勤姓名:程少锋学号:139074366班级:物联网131班实验三 8253、8255、8259综合实验18253计数器实验要求:计数器1方式0计数,计满3个数产生中断,中断5次后结束。实验线路见图6-6:图6-6 8253计数器实验电路图实验程序:INTPORT1 EQU 0FF80H ;8259A的偶地址入口INTPORT2 EQU 0FF81H ;8259A的偶地址入口INTQ3 EQU INTREEUP3 ;INTREEUP3地址TCONTR0 EQU 0043H ;8253端口地址TCON1 EQU 004
2、1H ;8253端口地址PA EQU 0FF20H ;字位口PB EQU 0FF21H ;字形口PC EQU 0FF22H ;键入口code segment assume cs:code ORG 12D0H ;源地址START: JMP START0 ; 跳转到START0BUF DB ?,?,?,?,?,? ;六字节缓冲区intcnt db ? ;一字节的缓冲区data1 db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h db 0a1h,86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0b
3、fh,8FH;七段码定义START0: CLD;置方向位 CALL BUF1 ;调用子程序BUF1 CALL WRINTVER ;WRITE INTRRUPT MOV AL,13H ;写ICW1,边沿触发,单片,需要ICW4 MOV DX,INTPORT1 OUT DX,AL MOV AL,08H;ICW2,中断类型号高5位 MOV DX,INTPORT2 OUT DX,ALMOV AL,09H;写ICW4,BUF位在缓冲方式下工作,8086/8088系统 OUT DX,AL MOV AL,0F7H OUT DX,AL MOV intcnt,01H ;TIME=1 MOV DX,TCONTR0
4、;指向控制口 MOV AL,51H ;8253控制字,通道1,方式0,只读/写低字节,BCD码计数 OUT DX,AL;送控制字 MOV DX,TCON1;指向控制口 MOV AL,03;计数值低字节 OUT DX,AL;送控制字 MOV DX,0FF23H;指向8255A控制口 MOV AL,80;A口方式0,输出,C口上半部输出,B口方式,输出,C口下半部输出 OUT DX,AL;送控制字 STI; 开中断WATING: CALL DISP ;DISP 825359 JMP WATINGWRINTVER: MOV AX,0H MOV ES,AX MOV DI,002CH;目的地址 LEA
5、AX,INTQ3;INTQ3的偏移地址 STOSW;存字 MOV AX,0000h;清零 STOSW RET;中断返回INTREEUP3: push ax;入栈 push bx push cx push dx MOV DX,TCON1;指向控制口 MOV AL,03;计数值低字节 OUT DX,AL MOV AL,INTCNT CALL CONVERS MOV BX,OFFSET BUF MOV AL,10H MOV CX,05H;置循环数INTRE0: MOV BX,AL;将Al中的值存在BX中 INC BX;BX加1 LOOP INTRE0;循环 ADD INTCNT,01H;循环数是五次
6、 CMP INTCNT,06H JNA INTRE2 CALL BUF2 ;DISP:goodINTRE1: CALL DISP JMP INTRE1CONVERS: AND AL,0FH;显示次数 MOV BX,offset buf MOV BX+5,AL RETINTRE2: MOV AL,20H MOV DX,INTPORT1 OUT DX,AL pop dx pop cx pop bx pop ax IRET;软中断返回DISP: MOV AL,0FFH ;00H MOV DX,PA;清零 OUT DX,AL MOV CL,0DFH ;20H MOV BX,OFFSET BUFDIS1
7、: MOV DX,PC OUT DX,AL MOV AL,BX MOV AH,00H PUSH BX MOV BX,OFFSET DATA1 ADD BX,AX MOV AL,BX POP BX MOV DX,PB OUT DX,AL MOV AL,CL MOV DX,PA OUT DX,AL PUSH CXDIS2: MOV CX,00A0H LOOP $ POP CX CMP CL,0FEH ;01H JZ LX1 INC BX ROR CL,1 ;SHR CL,1 JMP DIS1LX1: MOV AL,0FFH MOV DX,PB OUT DX,AL RETBUF1: MOV BUF,
8、08H MOV BUF+1,02H MOV BUF+2,05H MOV BUF+3,03H MOV BUF+4,05H MOV BUF+5,09H RETBUF2: MOV BUF,09H MOV BUF+1,00H MOV BUF+2,00H MOV BUF+3,0dH MOV BUF+4,10H MOV BUF+5,10H RETCODE ENDSEND START思考:如果计数器0方式0计数,计满5个数产生中断,中断3次后结束。硬件软件如何修改?硬件修改:将连接在CLK1,GATE1,OUT1的连线改接到CLK0,GATE0,OUT0上。程序修改:将程序对应部分做如下修改1、TCON1
9、EQU 0041H改为TCON1 EQU 0040H 2、将8253控制字由MOV AL,51H改为 MOV AL,11H 3、计数值低字节将 MOV AL,02改为MOV AL,04 4、将CMP INTCNT,06H改为CMP INTCNT,04H;2、8253定时器实验要求:用8253定时器1通道定时,每隔1秒使PA口的指示灯的状态右移一位。主程序反复游走显示8253A。8253定时器实验线路见图6-7:图6-7 8253计数器实验电路图实验程序:CODE SEGMENT ;ASSUME CS:CODEINTPORT1 EQU 0FF80H;8259A的偶地址入口INTPORT2 EQU
10、 0FF81H;8259A的奇地址入口INTQ3 EQU INTREEUP3TCONTR0 EQU 0043H;8253端口地址TCON1 EQU 0041H;8253端口地址IOCONPT EQU 0FF2BH;8255A的端口地址IOBPT EQU 0FF29H;8255A的端口地址IOAPT EQU 0FF28H;8255A的端口地址PA EQU 0FF20H ;字位口PB EQU 0FF21H ;字形口PC EQU 0FF22H ;键入口 ORG 12D0H;源地址START: JMP START0BUF DB ?,?,?,?,?,?;6字节缓冲区intcnt db ? ;1字节缓冲区
11、WEIKONG DB ? ;1字节缓冲区data1 db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h db 0a1h,86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FHSTART0: CLD;置方向位 CALL BUF1 CALL WRINTVER ;WRITE INTRRUPT MOV AL,13H;写ICW1,边沿触发,单片,需要ICW4 MOV DX,INTPORT1 OUT DX,AL MOV AL,08H;ICW2,中断类型号高5位MOV DX,INTPORT2 OU
12、T DX,AL MOV AL,09H;写ICW4,BUF位在缓冲方式下工作,8086/8088系统 OUT DX,AL MOV AL,0F7H OUT DX,AL MOV intcnt,50 ;软件计数50(1秒=20ms*50) MOV DX,TCONTR0 MOV AL,74H;通道1,先读/写低字节,再读/写高字节,方式2,二进制数 OUT DX,AL MOV DX,TCON1 ;计数器1定时20ms MOV AX,40000 OUT DX,AL MOV AL,AH;读入计数值的高字节 OUT DX,AL MOV DX,0FF2BH MOV AL,82H;A口方式0,输出,C口上半部输出
13、,B口方式,输入,C口下半部输出 OUT DX,AL MOV WEIKONG, 0FEH ;初始PA0对应位亮 MOV AL, WEIKONG MOV DX, 0FF29H OUT DX,AL STI ;开中断WATING: CALL DISP ;DISP 8253-A JMP WATINGWRINTVER: MOV AX,0H MOV ES,AX MOV DI,002CH;目的地址 LEA AX,INTQ3;INTQ3的偏移地址 STOSW MOV AX,0000h STOSW RETINTREEUP3: DEC INTCNT;INTCNT减1 JNZ INTRE2 MOV INTCNT,
14、50 ROL WEIKONG, 1 MOV DX, IOAPT MOV AL, WEIKONG OUT DX,ALINTRE2: MOV AL,20H MOV DX,INTPORT1 OUT DX,AL IRET;软中断返回DISP: MOV AL,0FFH ;00H MOV DX,PA OUT DX,AL MOV CL,0DFH ;20H MOV BX,OFFSET BUFDIS1: MOV DX,PC OUT DX,AL MOV AL,BX MOV AH,00H PUSH BX MOV BX,OFFSET DATA1 ADD BX,AX MOV AL,BX POP BX MOV DX,PB
15、 OUT DX,AL MOV AL,CL MOV DX,PA OUT DX,AL PUSH CXDIS2: MOV CX,0000H LOOP $ POP CX CMP CL,0FEH ;01H JZ LX1;相等转LX1 INC BX ROR CL,1 ;循环 右移一位,指示灯又移变亮 JMP DIS1LX1: MOV AL,0FFH;指示灯全灭 MOV DX,PB OUT DX,AL RETBUF1: MOV BUF,08H MOV BUF+1,02H MOV BUF+2,05H MOV BUF+3,03H MOV BUF+4,17H MOV BUF+5,0AH RETCODE ENDS
16、END START思考:硬件修改:将连接在CLK1,GATE1,OUT1的连线改接到CLK0,GATE0,OUT0上。 接在PB口的线与接在PA口的线互换。软件修改:按照下面对相应部分修改1、TCON1 EQU 0041H改为TCON1 EQU 0040H2、将MOV AL,74H改为MOV AL,34H;3、将MOV AL,82H改为MOV AL,90H4、将MOV WEIKONG, 0FEH 改为MOV WEIKONG, 07FH5、将MOV INTCNT, 50改为MOV INTCNT, 1006、将MOV AL, WEIKONG改为MOV AL, WEIKONG 7、将ROL WEIK
17、ONG, 1改为ROR WEIKONG, 18、将ROR CL,1 改为ROL CL,19、将MOV BUF+5,0AH改为MOV BUF+5,0BH五、本次实验总结实验过程中把学过的计算机编译原理以及操作系统的知识强化,能够把课堂上学的知识通过自己设计的程序表示出来,加深了对理论知识的理解。实验五 A/D转换实验一、实验目的 了解模/数转换基本原理,掌握ADC0809的使用方法; 掌握定时数据采集程序的编制方法。二、实验内容 1、A/D转换实验利用实验系统上电位器提供的可调电压作为0809模拟信号的输入,编制程序,将模拟量转换为数字量,通过数码管显示出来。(1)实验接线图 ADC0809接线
18、见图6-9图6-9 ADC0809接线图(2)编程指南 ADC0809的START端为A/D转换启动信号,ALE端为通道选择地址的锁存信号,实验电路中将其相连,以便同时锁存通道地址并开始A/D采样转换,其输入控制信号为CS和WR,故启动A/D转换只须如下两条指令:MOV DX,ADPORT ;ADC0809端口地址 OUT DX,AL ; 发CS和WR信号并送通道地址用延时方式等待A/D转换结果,使用下述指令读取A/D转换结果。 MOV DX,ADPORT ;ADC0809端口地址 INAL,DX 循环不断采样A/D转换的结果,边采样边显示A/D转换后的数字量。(3)实验程序框图 A/D转换流
19、程见图6-10图6-10 A/D转换流程(4)实验步骤 将0809 CS4插孔连到译码输出FF80H插孔。 将通道0模拟量输入端IN0连电位器W1的中心插头AOUT1(05V)插孔,8MHZT。 运行实验程序,系统上显示“0809 XX”。“XX”表示输入模拟量转换后的数字量。 调节电位器Wl, 显示器上会不断显示新的转换结果。模拟量和数字量对应关系的典型值为:0V00H +2.5V80H +5VFFH 按RST键退出。(5)实验程序清单CODE SEGMENT ;ASSUME CS:CODEADPORT EQU 0FF80h ;8259A偶地址入口PA EQU 0FF20H ;字位口PB E
20、QU 0FF21H ;字形口PC EQU 0FF22H ;键入口 ORG 1000H ;源地址START: JMP START0 ;跳转到START0BUF DB ?,?,?,?,?,? ;定义6字节缓冲区data1:db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1h ;定义七段码 db 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FHSTART0: CALL BUF1 ;调用BUF1子程序ADCON: MOV AX,00 MOV DX,ADPORT ;ADC0809端
21、口地址 OUT DX,AL ; 发CS和WR信号并送通道地址MOV CX,0500H ;置循环数;DELAY: LOOP DELAY ;空循环,延时 MOV DX,ADPORT ;ADC0809端口地址 IN AL,DX CALL CONVERS;调用子程序CONVERS CALL DISP ;调用显示子程序DISP JMP ADCON ;跳转到ADCONCONVERS: MOV AH,AL;将 ax中的低字节赋给高字节 AND AL,0FH ;保留al中的低四位 MOV BX,OFFSET BUF;buf的偏移地址 MOV BX+5,AL;将al中的值给Bx+5 MOV AL,AH ;取al
22、中的高四位 AND AL,0F0H MOV CL,04H ;值移位数 SHR AL,CL;右移四位 MOV BX+4,Al ;将Al中的值给BX+4 RET;返回DISP: MOV AL,0FFH ;PA端口全置1,使其灯无显示 MOV DX,PA OUT DX,AL MOV CL,0DFH ;将0DFH给CL MOV BX,OFFSET BUF;取BUF的偏移地址 给BXDIS1: MOV AL,BX;将BX中的内容取出给Al MOV AH,00H PUSH BX;BX入栈 MOV BX,OFFSET DATA1;取DATA1的偏移地址给BX ADD BX,AX;BX与Ax相加 MOV AL
23、,BPBX;将BX的内容取到AL中 POP BX;BX出栈 MOV DX,PB;Al中得内容在PB端口输出 OUT DX,AL MOV AL,CL;显示 MOV DX,PA OUT DX,AL PUSH CX;CX入栈DIS2: MOV CX,00A0H;循环00A0H次,延时 LOOP $ POP CX;CX出栈 CMP CL,0FEH;Cl 与0FEH比较 JZ LX1 ;Cl与00A0H相等,则程序跳转到LX INC BX;BX自加 ROR CL,1;Cl循环左移1位 JMP DIS1;循环显示LX1: MOV AL,0FFH;PB端口清零 MOV DX,PB OUT DX,AL RET
24、;中断返回BUF1: MOV BUF,00H MOV BUF+1,08H MOV BUF+2,00H MOV BUF+3,09H MOV BUF+4,00H MOV BUF+5,00H RETCODE ENDSEND START2、数据采集实验 要求:用8253定时器1通道定时,每隔半秒使从ADC0809的0通道IN0采集一个数据,若模拟电压在0-2V范围内(0-102),则使LED显示器L7-L4亮;若模拟电压大于2V,小于3V,则使L5-L2亮;若模拟电压大于等于3V,则使LED显示器L3-L0亮。(主程序重复所采集的数据)(1)实验接线图数据采集实验系统接线图见图6-11图6-11 数据
25、采集系统接线图(2)程序流程图主程序流程见图6-12图6-12 主程序流程图中断服务程序流程见图6-13图6-13 中断服务程序流程(3)实验程序清单CODE SEGMENT ;ASSUME CS:CODEINTPORT1 EQU 0FF80H ;8259A偶地址入口INTPORT2 EQU 0FF81H ;8259A奇地址入口INTQ3 EQU INTREEUP3 ;中断源IR3地址TCONTR0 EQU 0043H;8253端口地址TCON1 EQU 0041H;8253端口地址IOCONPT EQU 0FF2BHIOBPT EQU 0FF29HIOAPT EQU 0FF28HPA EQU
26、 0FF20H ;字位口PB EQU 0FF21H ;字形口PC EQU 0FF22H ;键入口ADPORT EQU 0FE00H ;ADC0809端口地址ORG 12D0H;源地址 START: JMP START0;跳转到START0BUF DB ?,?,?,?,?,?;定义6字节的缓冲区intcnt db ?RES DB ?data1 db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h db 0a1h,86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH;定义七段码START
27、0: CLD;置方向位 CALL BUF1;调用BUF1 CALL WRINTVER ;调用 WRINTVER MOV AL,13H;初始化ICW1,单片,边沿触发,设置ICW4 MOV DX,INTPORT1 OUT DX,AL MOV AL,08H;写ICW2,允许IR3中断 MOV DX,INTPORT2 OUT DX,AL MOV AL,09H;写ICW4,8259A在缓冲方式下工作,8086/8088系统 OUT DX,AL MOV AL,0F7H;写OCW1,允许中断源IR3,其余均被屏蔽 OUT DX,AL MOV intcnt,25 MOV DX,TCONTR0 MOV AL,
28、74H;8253工作通道1,先读(写)低字节,再读(写)高字节,方式4,二进制计数 OUT DX,AL MOV DX,TCON1 MOV AX,40000;8253初始值40000 OUT DX,AL MOV AL,AH;写初值的高字节 OUT DX,ALMOV DX,0FF2BH;8255初始化,PA口方式0,输出 MOV AL,82H OUT DX,AL STI;开中断WATING: CALL DISP;调用显示程序 JMP WATING;循环,延时WRINTVER: MOV AX,0H MOV ES,AX;ES指向AX MOV DI,002CH;置DI初值为CH LEA AX,INTQ3;取INTQ3的初值 STOSW MOV AX,0000h STOSW
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1