1、微机原理与接口技术实验报告班级:通信 0702姓名:刘海帝学号:07211045实验一:可编程定时器/计数器(8253)一、实验目的:掌握 8253 的基本工作原理和编程方法二、实验内容:1.按下图虚线连接电路,将计数器 0 设置为方式 0,计数初值为N( N=0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察 OUT0 电平变化(当输入 N+1 个脉冲后 OUT0 变高电平) 。流程图为:开 始设计数器 0为工作方式0送计数器初值读计数器值显示计数器值有键按下么?结 束NY2、按下图连接电路,将计数器 0、计数器 1 设置为方式 3,计数初值为1000,用逻辑笔观察
2、 OUT1 输出电平的变化(1Hz) 。流程图如下:开 始设计数器 0 为工作方式 3像计数器 0 送初值 1000 先送低字节后送高字节设计数器 1 为工作方式 3向计数器 1 送初值 1000 先送低字节后送高字节结 束三、编程提示:8253 控制寄存器地址 283H 替换后:C403H计数器 0 地址 280H 替换后:C400H计数器 1 地址 281H 替换后:C401HCLK0 连接时钟 1MHz四、实验程序:1-1STACK1 SEGMENT STACKDW 100H DUP(?)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,SS:STACK1STA
3、RT:MOV DX,C403HMOV AL,00010000B;计数器 0,只读写低字节,工作方式 0,二进制计数OUT DX,ALMOV DX,C400HMOV AL,6OUT DX,AL;写初值L0:MOV DX,C400HIN AL,DX;读计数器计数值ADD AL,30H;9,加 30H 转换为 ASCII 码MOV DL,ALMOV AH,02HINT 21H;2 号功能调用,显示MOV DL,0DHMOV AH,02HINT 21HCMP AL,0;计数值为 0 时结束JZ L1MOV AH,06HMOV DL,0FFHINT 21H;判断有无键按下JZ L0;无键按下,继续计数,
4、有键按下,结束L1:MOV AH,4CHINT 21HCODE ENDSEND START1-2CODE SEGMENTASSUME CS:CODESTART:MOV DX,0C403HMOV AL,00110110B;计数器 0,依次读写低字节,高字节,方式 3OUT DX,ALMOV DX,C400HMOV AX,1000OUT DX,AL;写计数值低字节MOV AL,AHOUT DX,AL;写计数值高字节MOV DX,C403HMOV AL,01110110B;计数器 1,依次读写低字节,高字节,方式 3OUT DX,ALMOV DX,C401HMOV AX,1000OUT DX,AL;
5、写计数值低字节MOV AL,AHOUT DX,AL;写计数值高字节MOV AH,4CHINT 21HCODE ENDSEND START五、实验现象及分析1.实验 1 中运行后,逻辑笔代表低电平的绿灯亮,当按下脉冲键后,屏幕上显示出计数值,依次为 5,4,3 ,2,1,0.计数结束后,输出高电平,逻辑笔红灯亮。2.实验 2 运行后逻辑笔交替输出高低电平,红灯和绿灯分别闪烁,周期为1Hz。周期为 1Hz 的原因是输入的方波为 1MHZ,经过计数器 0 以 1000 进行分频,计数器 1 以 1000 分频,正好为 1HZ。第一次编程,程序运行中遇到了一些意想不到的问题。比如,忽略了字符串型常数,
6、每个字符在机内以 ASCII 码存放;还有就是在运行后,屏幕上显示的是一连串的同一个字符,和同学讨论之后,引入一个 2 号功能调用:MOV DL,0DH ;回车的 ASCII 码为 0DHMOV AH,02HINT 21H 此题编程比较简单,原理易懂。实验二:交通灯控制实验一、 实验目的:通过并行接口 8255 实现十字路口交通灯的模拟控制,进一步掌握对并行接口的使用。二、实验内容:如图,L7、L6、L5 作为南北路口的交通灯与 PC7、PC6、PC5 相连,L2、L1、L0 作为东西路口的交通灯与 PC2、PC1、PC0 相连。编程使六个灯按交通灯变化规律燃灭。三、编程提示:8255 控制寄
7、存器端口地址:28BH 替换后: C40BHA 口的地址: 288H 替换后:C408HB 口的地址: 28AH 替换后:C40AH流程图:开 始设置 8255AC 口输出南北路口绿灯亮,东西路口红灯亮长延时南北路口黄灯闪,东西路口红灯亮南北路口红灯亮,东西路口绿灯亮长延时南北路口红灯亮,东西路口黄灯闪是否有键按下?返回 DOSNY四、实验程序STACK1 SEGMENT STACK DB 200H DUP(?)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,SS:STACK1START:MOV DX,0C40BH;控制端口地址为 0C40BHMOV AL,1000
8、0000B;A,B,C 三个端口设为方式 0,输出OUT DX,AL L0: MOV DX,0C40AH;C 口地址为 0C40AHMOV AL,00100100B;南北路口绿灯亮,东西路口红灯亮OUT DX,AL;写入 C 口CALL DELAY1;调用延时子程序 1MOV CX,4;闪烁计数L1: MOV AL,01000100B ;南北黄灯亮,东西红灯亮OUT DX,ALCALL DELAY2;调用延时程序 2MOV AL,00000100B ;南北黄灯灭,东西红灯亮OUT DX,ALCALL DELAY2;调用延时子程序 2LOOP L1;计数值减一,不为 0,转移到 L1MOV AL
9、,10000001B ;南北红灯亮,东西绿灯亮OUT DX,ALCALL DELAY1 ;调用延时子程序 1MOV CX,4L2: MOV AL,10000010B ;南北红灯亮,东西黄灯亮OUT DX,ALCALL DELAY2;调用延时程序 2MOV AL,10000000B ;南北红灯亮,东西黄灯灭OUT DX,ALCALL DELAY2;调用延时程序 2LOOP L2 ;计数值减一,不为 0,跳至 L2MOV DL,0FFHMOV AH,06HINT 21HJZ L0;无键按下,循环,按任意键结束MOV AH,4CH ;退出 DOS 系统INT 21HDELAY1 PROC ;延时子程
10、序 1,长延时PUSH CXPUSH BXPUSH AXMOV CX,0FFFFHT0: MOV BX,0FFFFHT1: DEC BXMOV AX,0FFFFHT2: DEC AXJNZ T2JNZ T1LOOP T0;设置三层嵌套,每一层计数值均为 0FFFFH,总计数值 FFFF*FFFF*FFFFPOP BXPOP AXPOP CXRETDELAY1 ENDPDELAY2 PROC PUSH CXPUSH AXMOV CX,3000HT3: MOV AX,0FFFFHT4: DEC AXJNZ T4LOOP T3;二层嵌套,外层嵌套为 3000H,内层嵌套为 0FFFFH,总计数值为
11、A000*FFFFPOP AXPOP CXRETDELAY2 ENDPCODE ENDSEND START五、实验现象及分析:红黄绿灯变化规律如下:南北路口的绿灯、东西路口的红灯同时亮 3 秒左右;南北路口的黄灯闪烁若干次,同时东西路口的红灯继续亮;南北路口的红灯、东西路口的绿灯同时亮 3 秒左右;南北路口的红灯继续亮,同时东西路口的黄灯闪烁若干次;依次重复。最开始时延时过短,灯闪烁,而不是一直亮,增加了延时改进了效果,达到了实验的要求。本题的原理较容易弄懂,最容易出现问题的是在延时中 CX和 AX 中值得设定上,经过多次试验,最终找到了比较符合题目要求的数值。此题较大的难点在于将实际观察到的现象转换为编程所需要的逻辑思路,也就是子延时的合理设定,将起到决定性的作用。实验三:竞赛抢答器一、实验目的:1.了解微机化竞赛抢答器的基本原理2.进一步学习使用并行接口