实验八 8250可编程通信实验

合集下载

8255并行口实验

8255并行口实验
以前在单片机基础实验中做过LED显示实验和数码管显示实验,所以这两个实验比较好做。在第二个实验中,分别置全开和全关时想用这些代码实现
JZ NEXT
MOV AL,00H
NEXT:MOVAL,0FFH

结果无论开关是否闭合,全都不亮,后来发现只需在中间加上个跳转语句就行了。
实验程序如下
附录
实验题1:
ASSUME CS:CODE学号
113200880200057
专业年级
电子信息工程2008级
实验题目
8255并行口实验
实验目的
1、掌握可编程并行接口8255的初始化及其应用
2、掌握汇编语言源程序的设计方法
实验内容
实验内容1:8255A的A口作为输入口,与逻辑电平开关K1~K8相连。8255A的B口作为输出口,与发光二极管LED1~LED8相连。编写程序,使得逻辑电平开关的变化在发光二极管上显示出来。即当开关ki置于L时,对应发光二极管LEDi点亮;置于H时熄灭。
TEST AL,01H;测试PA0的状态
JZ NEXT;PA0为0则跳转
MOV AL,00H;否则全亮
JMP LOOP2
NEXT:MOV AL,0FFH;置全灭
LOOP2:MOV DX,04A2H
OUT DX,AL;输出,控制灯的开关
JMP LOOP1
CODE ENDS
END START
CODE SEGMENT PUBLIC
ORG 100H
START:MOVAL,10010000B
MOV DX,04A6H
OUT DX,AL;送出8255的控制字
LOOP1:MOV DX,04A0H
IN AL,DX;读入A口的状态

9.2 可编程串行接口8250

9.2  可编程串行接口8250

常用的可编程串行接口芯片有Intel的8250、8251, 常用的可编程串行接口芯片有Intel的8250、8251, 美国国家半导体公司的16550等 8250与16550完全 美国国家半导体公司的16550等。8250与16550完全 兼容。 兼容。
电子科技大学
微机系统原理及接口技术应用
异步串行数ቤተ መጻሕፍቲ ባይዱ发送格式
电子科技大学
微机系统原理及接口技术应用
(2)发送部分
1.CPU送来的并行数据存放在发送保持寄存器中 1.CPU送来的并行数据存放在发送保持寄存器中 2.数据经过发送移位寄存器进行并串转换 2.数据经过发送移位寄存器进行并串转换 3.按规定格式加上起始位、奇偶校验位和停止位,构成完整 3.按规定格式加上起始位 奇偶校验位和停止位, 按规定格式加上起始位、 的串行数据帧 4.数据由Sout发出 4.数据由Sout发出 数据由Sout 另外,当数据进入到发送移位寄存器后,发送保持寄存器 另外,当数据进入到发送移位寄存器后, 自动变空,以接收下一个待发送的数据。 自动变空,以接收下一个待发送的数据。
状态时,若允许Modem状态中断,就会产生一次中断 状态中断, 状态时,若允许Modem状态中断 接收线路信号检测输入, =0,表明Modem已 . RLSD :接收线路信号检测输入, RLSD =0,表明Modem已 收到数据载波,8250/16550应立即开始接收解调 收到数据载波,8250/16550应立即开始接收解调 后的数据
电子科技大学
微机系统原理及接口技术应用
同步通信: 同步通信: 1.通信开始后,发送设备连续发送字符, 1.通信开始后 发送设备连续发送字符, 通信开始后, 接收设备首先搜索同步字符, 接收设备首先搜索同步字符,在得到同 步字符后开始接收数据。 步字符后开始接收数据。 2. 传送过程中,发送设备和接收设备必须 传送过程中, 要保持完全同步,即使用同一个时钟。 要保持完全同步,即使用同一个时钟。

试验八8255可编程并行接口试验二

试验八8255可编程并行接口试验二

计算机与电子信息工程系二〇一二年三月目录实验一 P1口实验一1实验二 P1口实验二3实验三简单I/O扩展实验〔交通灯控制〕5实验四简单I/O扩展实验二8实验五定时器实验〔循环彩灯〕10实验六 8255A可编程并行接口实验112实验七 8255可编程并行接口实验213实验八数码显示实验17实验九 D/A转换实验21实验十 8253定时器实验25实验一 P1口实验一[实验目的]⒈学习P1口的使用方法.⒉学习延时子程序的编写和使用.[实验设备]EL-8051-III型单片机实验箱[实验内容]⒈P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮.⒉P1口做输入口,接八个按纽开关,以实验箱上74LS273做输出口,编写程序读取开关状态,在发光二极管上显示出来.[实验原理]P1口为准双向口,P1口的每一位都能独立地定义为输入位或输出位.作为输入位时,必须向锁存器相应位写入"1〞,该位才能作为输入.8031中所有口锁存器在复位时均置为"1〞,如果后来在口锁存器写过"0〞,在需要时应写入一个"1〞,使它成为一个输入.可以用第二个实验做一下实验.先按要求编好程序并调试成功后,可将P1口锁存器中置"0〞,此时将P1做输入口,会有什么结果.再来看一下延时程序的实现.现常用的有两种方法,一是用定时器中断来实现,一是用指令循环来实现.在系统时间允许的情况下可以采用后一种方法.本实验系统晶振为6.144MHZ,则一个机器周期为12÷6.144us即1÷0.512us.现要写一个延时0.1s的程序,可大致写出如下:MOV R7,#X 〔1〕DEL1:MOV R6,#200 〔2〕DEL2:DJNZ R6,DEL2 〔3〕DJNZ R7,DEL1 〔4〕上面MOV、DJNZ指令均需两个机器周期,所以每执行一条指令需要1÷0.256us,现求值:1÷0.256+X〔1÷0.256+200×1÷0.256+1÷0.256〕=0.1×10?指令〔1〕指令〔2〕指令〔3〕指令〔4〕所需时间所需时间所需时间所需时间=<0.1××10?-1÷0.256>/〔1÷0.256+200×1÷0.256+1÷0.256〕=127D=7FH 经计算得X=127.代入上式可知实际延时时间约为0.100215s,已经很精确了.[实验原理图][实验步骤]执行程序1<T1_1.ASM>时:P1.0~P1.7接发光二极管L1~L8.执行程序2<T1_1.ASM>时:P1.0~P1.7接平推开关K1~K8;74LS273的O0~O7接发光二极管L1~L8;74LS273的片选端CS273接CS0.[程序框图][参考程序]⒈循环点亮发光二极管NAME T1_1CSEG AT 0000HLJMP STARTCSEG AT 4100HSTART: MOV A,#0FEHLOOP: RR AMOV P1,ALCALL DELAYJMP LOOPDELAY: MOV R1,#127DEL1: MOV R2,#200DEL2: DJNZ R2,DEL2DJNZ R1,DEL1RETEND⒉通过发光二极管将P1口的状态显示NAME T1_2 ;P1口输入实验OUT_PORT EQU 0CFA0HCSEG AT 0000HLJMP STARTCSEG AT 4100HSTART: MOV P1,#0FFH ;复位P1口为输入状态MOV A,P1 ;读P1口的状态值入累加器AMOV DPTR,#OUT_PORT ;将输出口地址赋给地址指针DPTRMOVX DPTR,A ;将累加器A的值赋给DPTR指向的地址JMP START ;继续循环监测端口P1的状态END实验二 P1口实验二[实验目的]⒈学习P1口既做输入又做为输出的使用方法.⒉学习数据输入、输出程序的设计方法.[实验设备]EL-8051-III型单片机实验箱[实验原理]P1口的使用方法这里不讲了.有兴趣者不妨将实验例程中的"SETB P1.0, SETB P1.1〞中的"SETB〞改为"CLR〞看看会有什么结果.另外,例程中给出了一种N路转移的常用设计方法,该方法利用JMPA+DPTR 的计算功能,实现转移.该方法的优点是设计简单,转移表短,但转移表大小加上各个程序长度必须小于256字节.[实验原理图][实验步骤]平推开关的输出K1接P1.0;K2接P1.1;发光二极管的输入L1接P1.2;L2接P1.3;L5接P1.4;L6接P1.5.运行实验程序,K1做为左转弯开关,K2做为右转弯开关.L5、L6做为右转弯灯,L1、L2做为左转弯灯.结果显示:⒈1接高电平K2接低电平时,右转弯灯〔L5、L6〕灭,左转弯灯〔L1、L2〕以一定频率闪烁;⒉K2接高电平K1接低电平时,左转弯灯〔L1、L2〕灭,右转弯灯〔L5、L6〕以一定频率闪烁;⒊K1、K2同时接低电平时,发光二极管全灭;⒋K1、K2同时接高电平时,发光二极管全亮.[程序框图][参考程序]NAME T2 ;P1口输实验CSEG AT 0000HLJMP STARTCSEG AT 4100HSTART: SETB P1.0SETB P1.1 ;用于输入时先置位口内锁存器MOV A,P1ANL A,#03H ;从P1口读入开关状态,取低两位MOV DPTR,#TAB ;转移表首地址送DPTRMOVC A,A+DPTRJMP A+DPTRTAB: DB PRG0-TABDB PRG1-TABDB PRG2-TABDB PRG3-TABPRG0: MOV P1,#0FFH ;向P1口输出0,发光二极管全灭;此时K1=0,K2=0 JMP STARTPRG1: MOV P1,#0F3H ;只点亮L1、L2,表示左转弯ACALL DELAY ;此时K1=1,K2=0MOV P1,#0FFH ;再熄灭0.5秒ACALL DELAY ;延时0.5秒JMP STARTPRG2: MOV P1,#03FH ;只点亮L5、L6,表示右转弯ACALL DELAY ;此时K1=0,K2=1MOV P1,#0FFHAALL DELAYJMP STARTPRG3: MOV P1,#00H ;发光二极管全亮,此时K1=1,K2=1JMP STARTDELAY: MOV R1,#5 ;延时0.5秒DEL1: MOV R2,#200DEL2: MOV R3,#126DEL3: DJNZ R3,DEL3DJNZ R2,DEL2DJNZ R1,DEL1RETEND实验三简单I/O扩展实验〔交通灯控制〕[实验题目]扩展实验箱上的74LS273做为输出口,控制八个发光二极管燃灭,模拟交通灯.[实验目的]⒈学习在单片机系统中扩展简单I/O接口的方法.⒉学习数据输出程序的设计方法.⒊学习模拟交通灯控制的实现方法.[实验原理].要完成本实验,首先必须了解交通路灯的燃灭规律.本实验需要用到实验箱上八个发光二极管中的六个,即红、黄、绿各两个.不妨将L1、L3、L5做为东西方向的指示灯,将L2、L4、L6做为南北方向的指示灯.而交通灯的燃灭规律为:初始态是两个路口的红灯全亮,之后,东西路口的绿灯亮,南北路口的红灯亮,东西方向通车,延时一段时间后,东西路口绿灯灭,黄灯开始闪烁.闪烁若干次后,东西路口的红灯亮,而同时南北路口的绿灯亮,南北方向开始通车,延时一段时间后,南北路口的绿灯灭,黄灯开始闪烁,闪烁若干次后,再切换到东西路口方向,重复上述过程.各发光二极管共阳极,阴极接有与非门,因此使其点亮使相应输入端为高电平.[实验原理图][实验步骤]74LS273的输出O0~O7接发光二极管L1~L8,74LS273的片选CS273接片选信号CSO,此时74LS273的片选地址为CFA0H~CFA7H之间任选.运行实验程序,观察LED显示情况是否与实验内容相符.[程序框图][参考程序]NAME T3 ;I/O口扩展实验一PORT EQU 0CFA0H ;片选地址CS0CSEG AT 0000HLJMP STARTCSEG AT 4100HSTART: MOV A,#11H ;两个红灯亮,黄灯、绿灯灭ACALL DISP ;调用273显示单元〔以下雷同〕ACALL DE3S ;延时3秒LLL: MOV A,#12H ;东西路口绿灯亮;南北路口红灯亮ACALL DISPACALL DE10S ;延时10秒MOV A,#10H ;东西路口绿灯灭;南北路口红灯亮ACALL DISPMOV R2,#05H ;R2中的值为黄灯闪烁次数TTT: MOV A,#14H ;东西路口黄灯亮;南北路口红灯亮ACALL DISPACALL DE02S ;延时0.2秒MOV A,#10H ;东西路口黄灯灭;南北路口红灯亮ACALL DISPACALL DE02S ;延时0.2秒DJNZ R2,TTT ;返回TTT,使东西路口;黄灯闪烁五次MOV A,#11H ;两个红灯亮,黄灯、绿灯灭ACALL DISPACALL DE02S ;延时0.2秒MOV A,#21H ;东西路口红灯亮;南北路口绿灯亮ACALL DISPACALL DE10S ;延时10秒MOV A,#01H ;东西路口红灯亮;南北路口绿灯灭ACALL DISPMOV R2,#05H ;黄灯闪烁五次GGG: MOV A,#41H ;东西路口红灯亮;南北路口黄灯亮ACALL DISPACALL DE02S ;延时0.2秒MOV A,#01H ;东西路口红灯亮;南北路口黄灯灭ACALL DISPACALL DE02S ;延时0.2秒DJNZ R2,GGG ;返回GGG,使南北路口;黄灯闪烁五次MOV A,#03H ;两个红灯亮,黄灯、绿灯灭ACALL DISPACALL DE02S ;延时0.2秒JMP LLL ;转LLL循环DE10S: MOV R5,#100 ;延时10秒JMP DE1DE3S: MOV R5,#30 ;延时3秒JMP DE1DE02S: MOV R5,#02 ;延时0.2秒DE1: MOV R6,#200DE2: MOV R7,#126DE3: DJNZ R7,DE3DJNZ R6,DE2DJNZ R5,DE1RETDISP: MOV DPTR,#PORT ;273显示单元CPL AMOVX DPTR,A RETEND实验四简单I/O扩展实验二[实验题目]利用74LS244做为输入口,读取开关状态,并将此状态通过发光二极管显示出来.[实验目的]⒈学习在单片机系统中扩展简单I/O口的方法.⒉学习数据输入,输出程序的编制方法.[实验原理]MCS-51外部扩展空间很大,但数据总线口和控制信号线的负载能力是有限的.若需要扩展的芯片较多,则MCS-51总线口的负载过重,74LS244是一个扩展输入口,同时也是一个单向驱动器,以减轻总线口的负担.程序中加了一段延时程序,以减少总线口读写的频繁程度.延时时间约为0.01秒,不会影响显示的稳定.[实验原理图][实验步骤]⒈74LS244的IN0~IN7接开关的K1~K8,片选信号CS244接CS1.⒉74LS273的O0~O7接发光二极管的L1~L8,片选信号CS273接CS2.⒊编程、全速执行.⒋拨动开关K1~K8,观察发光二极管状态的变化.[程序框图][参考程序]NAME T4 ;I/O口扩展实验CSEG AT 0000HLJMP STARTCSEG AT 4100HINPORT EQU 0CFA8H ;74LS244端口地址OUTPORT EQU 0CFB0H ;74LS273端口地址START: MOV DPTR,#INPORTLOOP: MOVX A,DPTR ;读开关状态MOV DPTR,#OUTPORTMOVX DPTR,A ;显示开关状态MOV R7,#10H ;延时DEL0: MOV R6,#0FFHDEL1: DJNZ R6,DEL1DJNZ R7,DEL0JMP STARTEND实验五定时器实验〔循环彩灯〕[实验题目]由8031内部定时器1按方式1工作,即作为16位定时器使用,每0.1秒钟T1溢出中断一次.P1口的P1.0~P1.7分别接发光二极管的L1~L8.要求编写程序模拟一循环彩灯.[实验目的]⒈学习8031内部计数器的使用和编程方法.⒉进一步掌握中断处理程序的编写方法.[有关说明]P彩灯变化花样可自行设计.例程给出的变化花样为:①L1、L2、…L8依次点亮;②L1、L2、…L8依次熄灭;③L1、L2、…L8全亮、全灭.各时序间隔为0.5秒.让发光二极管按以上规律循环显示下去.[连线方法]P1.0~P1.7分别接发光二极管L1~L8.[实验电路][程序框图]〔中断程序框图〕<主程序框图>[参考程序]NAME T6 ;定时器实验OUTPORT EQU 0CFB0HCSEG AT 0000HLJMP STARTCSEG AT 401BH ;定时器/计数器1中断程序入口地址LJMP INTCSEG AT 4100HSTART: MOV A,#01H ;首显示码MOV R1,#03H ;03是偏移量,即从基址寄存器到表首的距离MOV R0,#5H ;05是计数值MOV TMOD,#10H ;计数器置为方式1MOV TL1,#0AFH ;装入时间常数MOV TH1,#03CHORL IE,#88H ;CPU中断开放标志位和定时器;1溢出中断允许位均置位SETB TR1 ;开始计数LOOP1: CJNE R0,#00,DISPMOV R0,#5H ;R0计数计完一个周期,重置初值INC R1 ;表地址偏移量加1CJNE R1,#31H,LOOP2MOV R1,#03H ;如到表尾,则重置偏移量初值LOOP2: MOV A,R1 ;从表中取显示码入累加器MOVC A,A+PCJMP DISPDB 01H,03H,07H,0FH,1FH,3FH,7FH,0FFH,0FEH,0FCHDB 0F8H,0F0H,0E0H,0C0H,80H,00H,0FFH,00H,0FEHDB 0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH,0BFH,0DFH DB 0EFH,0F7H,0FBH,0FDH,0FEH,00H,0FFH,00HDISP: ;MOV DPTR,#OUTPORTMOVX DPTR,AMOV P1,A ;将取得的显示码从P1口输出显示JMP LOOP1INT: CLR TR1 ;停止计数DEC R0 ;计数值减一MOV TL1,#0AFH ;重置时间常数初值MOV TH1,#03CHSETB TR1 ;开始计数RETI ;中断返回END实验六 8255A可编程并行接口实验1[实验题目]利用8255A可编程并行接口芯片,重复实验四的内容.实验可用B通道作为开关量输入口,A通道作为显示输出口.[实验目的]⒈了解8255A芯片的结构与编程方法.⒉掌握通过8255A并行口读取开关数据的方法.[有关说明]设置好8255A各端口的工作模式.实验中应当使三个端口都工作于方式0,并使A口为输出口,B口为输入口.[连线方法]8255A的PA0~PA7接发光二极管L1~L8;PB0~PB7接开关K1~K8;片选信号8255CS接CS0.[实验电路][程序框图][参考程序]NAME T7 ;8255A实验一CSEG AT 0000HLJMP STARTCSEG AT 4100HPA EQU 0CFA0HPB EQU 0CFA1HPCTL EQU 0CFA3HSTART: MOV DPTR,#PCTL ;置8255A控制字,A、B、C口均工作;方式0,A、C口为输出,B口为输入MOV A,#082HMOVX DPTR,ALOOP: MOV DPTR,#PB ;从B口读入开关状态值MOVX A,DPTRMOV DPTR,#PA ;从A口将状态值输出显示MOVX DPTR,AMOV R7,#10H ;延时DEL0: MOV R6,#0FFHDEL1: DJNZ R6,DEL1DJNZ R7,DEL0JMP LOOPEND实验七 8255可编程并行接口实验2[实验目的]⒈掌握8255A编程原理.⒉了解键盘电路的工作原理.⒊掌握键盘接口电路的编程方法.[实验设备]EL-8051-III型单片机实验箱[实验原理]⒈识别键的闭合,通常采用行扫描法和行反转法.行扫描法是使键盘上某一行线为低电平,而其余行接高电平,然后读取列值,如所读列值中某位为低电平,表明有键按下,否则扫描下一行,直到扫完所有行. 本实验例程采用的是行反转法.行反转法识别键闭合时,要将行线接一并行口,先让它工作于输出方式,将列线也接到一个并行口,先让它工作于输入方式,程序使CPU通过输出端口往各行线上全部送低电平,然后读入列线值,如此时有某键被按下,则必定会使某一列线值为0.然后,程序对两个并行端口进行方式设置,使行线工作于输入方式,列线工作于输出方式,并将刚才读得的列线值从列线所接的并行端口输出,再读取行线上的输入值,那么,在闭合键所在的行线上的值必定为0.这样,当一个键被按下时,必定可以读得一对唯一的行线值和列线值.⒉程序设计时,要学会灵活地对8255A的各端口进行方式设置.⒊程序设计时,可将各键对应的键值〔行线值、列线值〕放在一个表中,将要显示的0~F字符放在另一个表中,通过查表来确定按下的是哪一个键并正确显示出来.[实验题目]利用实验箱上的8255A可编程并行接口芯片和矩阵键盘,编写程序,做到在键盘上每按一个数字键〔0~F〕,用发光二极管将该代码显示出来.[实验步骤]将键盘RL10~RL17接8255A的PB0~PB7;KA10~KA12接8255A的PA0~PA2;PC0~PC7接发光二极管的L1~L8;8255A芯片的片选信号8255CS接CS0.[实验电路][程序框图][参考程序]NAME t8 ;8255键盘实验PA EQU 0CFA0HPB EQU PA+1PC0 EQU PB+1PCTL EQU PC0+1CSEG AT 4000HLJMP STARTNAME t8 ;8255键盘实验PA EQU 0CFA0HPB EQU PA+1PC0 EQU PB+1PCTL EQU PC0+1CSEG AT 4000HLJMP STARTCSEG AT 4100HSTART: MOV 42H,#0FFH ;42H中放显示的字符码,初值为0FFH STA1: MOV DPTR,#PCTL ;设置控制字,ABC口工作于方式0;AC口输出而B口用于输入MOV A,#82HMOVX DPTR,ALINE: MOV DPTR,#PC0 ;将字符码从C口输出显示MOV A,42HCPL AMOVX DPTR,AMOV DPTR,#PA ;从A口输出全零到键盘的列线MOVX DPTR,AMOV DPTR,#PB ;从B口读入键盘行线值MOVX A,DPTRMOV 40H,A ;行线值存于40H中CPL A ;取反后如为全零;表示没有键闭合,继续扫描JZ LINEMOV R7,#10H ;有键按下,延时10MS去抖动DL0: MOV R6,#0FFHDL1: DJNZ R6,DL1DJNZ R7,DL0MOV DPTR,#PCTL ;重置控制字,让A为输入,BC为输出MOV A,#90HMOVX DPTR,AMOV A,40HMOV DPTR,#PB ;刚才读入的行线值取出从B口送出MOVX DPTR,AMOV DPTR,#PA ;从A口读入列线值MOVX A,DPTRMOV 41H,A ;列线值存于41H中CPL A ;取反后如为全零JZ STA1 ;表示没有键按下MOV DPTR,#TABLE ;TABLE表首地址送DPTRMOV R7,#18H ;R7中置计数值16MOV R6,#00H ;R6中放偏移量初值TT: MOVX A,DPTR ;从表中取键码前半段字节,行线值与实CJNE A,40H,NN1 ;际输入的行线值相等吗?不等转NN1INC DPTR ;相等,指针指向后半字节,即列线值MOVX A,DPTR ;列线值与实际输入的列线值CJNE A,41H,NN2 ;相等吗?不等转NN2MOV DPTR,#CHAR ;相等,CHAR表基址和R6中的偏移量MOV A,R6 ;取出相应的字符码MOVC A,A+DPTRMOV 42H,A ;字符码存于42HBBB: MOV DPTR,#PCTL ;重置控制字,让AC为输出,B为输入MOV A,#82HMOVX DPTR,AAAA: MOV A,42H ;将字符码从C口送到二极管显示MOV DPTR,#PC0CPL AMOVX DPTR,AMOV DPTR,#PA ;判断按下的键是否释放CLR AMOVX DPTR,AMOV DPTR,#PBMOVX A,DPTRCPL AJNZ AAA ;没释放转AAAMOV R5,#2 ;已释放则延时0.2秒,减少总线负担DEL1: MOV R4,#200DEL2: MOV R3,#126DEL3: DJNZ R3,DEL3DJNZ R4,DEL2DJNZ R5,DEL1JMP START ;转STARTNN1: INC DPTR ;指针指向后半字节即列线值NN2: INC DPTR ;指针指向下一键码前半字节即行线值INC R6 ;CHAR表偏移量加一DJNZ R7,TT ;计数值减一,不为零则转TT继续查找JMP BBBTABLE:DW 0FE06H,0FD06H,0FB06H,0F706H;TABLE为键值表,每个键位占DW 0BF06H,07F06H,0FE05H,0FD05H; 两个字节,第一个字节为行DW 0EF05H,0DF05H,0BF05H,07F05H ;线值,第二个为列线值DW 0FB03H,0F703H,0EF03H,0DF03H;CHAR: DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H ;字符码表DB 0AH,0BH,0CH,0DH,0EH,0FH,10H,11H,12H,13HDB 14H,15H,16H,17HEND实验八数码显示实验[实验目的]⒈进一步掌握定时器的使用和编程方法.⒉了解七段数码显示数字的原理.⒊掌握用一个段锁存器,一个位锁存器同时显示多位数字的技术.[实验设备]EL-8051-III型单片机实验箱[实验原理]本试验采用动态显示.动态显示就是一位一位地轮流点亮显示器的各个位〔扫描〕.将8031CPU的P1口当作一个锁存器使用,74LS273作为段锁存器.[实验题目]利用定时器1定时中断,控制电子钟走时,利用实验箱上的六个数码管显示分、秒,做成一个电子钟.显示格式为:分秒定时时间常数计算方法为:定时器1工作于方式1,晶振频率为6MHZ,故预置值Tx为:〔2e+16-Tx〕x12x1/〔6x10e+6〕=0.1s Tx=15535D=3CAFH,故TH1=3CH,TL1=AFH[实验电路].[实验接线]将P1口的P1.0~P1.5与数码管的输入LED6~LED1相连,74LS273的O0~O7与LEDA~LEDDp相连,片选信号CS273与CS0相连.去掉短路子连接.[程序框图].[实验接线]将P1口的P1.0~P1.5与数码管的输入LED6~LED1相连,74LS273的O0~O7与LEDA~LEDDp相连,片选信号CS273与CS0相连.去掉短路子连接.[参考程序]NAME T9 ;数码显示实验PORT EQU 0CFA0HBUF EQU 23H ;存放计数值SBF EQU 22H ;存放秒值CSEG AT 0000HLJMP STARTCSEG AT 401BHLJMP CLOCKCSEG AT 4100HSTART: MOV R0,#40H ;40H-45H是显示缓冲区,依次存放MOV A,#00H ;分高位、分低位,0A,0A〔横线〕MOV R0,A ;以与秒高位、秒底位INC R0MOV R0,AINC R0MOV A,#0AHMOV R0,AINC R0MOV R0,AINC R0MOV A,#00HMOV R0,AINC R0MOV R0,AMOV TMOD,#10H ;定时器1初始化为方式1MOV TH1,#38H ;置时间常数,延时0.1秒MOV TL1,#00HMOV BUF,#00H ;置0MOV SBF,#00HMOV MBF,#00HSETB ET1SETB EASETB TR1DS1: MOV R0,#40H ;置显示缓冲区首址MOV R2,#20H ;置扫描初值,点亮最左边的LED6DS2: MOV DPTR,#PORTMOV A,R0 ;得到的段显码输出到段数据口ACALL TABLEMOVX DPTR,AMOV A,R2 ;向位数据口P1输出位显码CPL AMOV P1,AMOV R3,#0FFH ;延时一小段时间DEL: NOPDJNZ R3,DELINC R0 ;显示缓冲字节加一CLR CMOV A,R2RRC A ;显码右移一位MOV R2,A ;最末一位是否显示完毕?,如无则JNZ DS2 ;继续往下显示MOV R0,#45HMOV A,SBF ;把秒值分别放于44H,45H中ACALL GETDEC R0 ;跳过负责显示"-"的两个字节DEC R0MOV A,MBF ;把分值分别放入40H,41H中ACALL GETSJMP DS1 ;转DS1从头显示起TABLE: INC A ;取与数字对应的段码MOVC A,A+PCRETDB 3FH,06H,5BH,4FH,66H,6DH,7DH, 07H, 7FH,6FH, 40H GET: MOV R1,A ;把从分或秒字节中取来的值的高ANL A,#0FH ;位屏蔽掉,并送入缓冲区MOV R0,ADEC R0MOV A,R1 ;把从分或秒字节中取来的值的低SWAP A ;位屏蔽掉,并送入缓冲区ANL A,#0FHMOV R0,ADEC R0 ;R0指针下移一位RETCLOCK: MOV TL1,#0AFH ;置时间常数MOV TH1,#3CHPUSH PSWPUSH ACCINC BUF ;计数加一MOV A,BUF ;计到10否?没有则转到QUIT退出中断CJNE A,#0AH,QUITMOV BUF,#00H ;置初值MOV A,SBFINC A ;秒值加一,经十进制调整后放入DA A ;秒字节MOV SBF,ACJNE A,#60H,QUIT ;计到60否?没有则转到QUIT退出中断MOV SBF,#00H ;是,秒字节清零MOV A,MBFINC A ;分值加一,经十进制调整后放入DA A ;分字节MOV MBF,ACJNE A,#60H,QUIT ;分值为60否?不是则退出中断MOV MBF,#00H ;是,清零QUIT: POP ACCPOP PSWRETI ;中断返回END实验九D/A转换实验[实验目的]⒈了解D/A转换的基本原理.⒉了解D/A转换芯片0832的性能与编程方法.⒊了解单片机系统中扩展D/A转换的基本方法.[实验设备]EL-8051-III型单片机实验箱[实验内容]利用DAC0832,编制程序产生锯齿波、三角波、正弦波.三种波形轮流显示. [实验原理]D/A转换是把数字量转换成模拟量的变换,从D/A输出的是模拟电压信号.产生锯齿波和三角波只需由A存放的数字量的增减来控制;要产生正弦波,较简单的手段是造一X正弦数字量表.取值X围为一个周期,采样点越多,精度就越高.本实验中,输入寄存器占偶地址端口,DAC寄存器占较高的奇地址端口.两个寄存器均对数据独立进行锁存.因而要把一个数据通过0832输出,要经两次锁存.典型程序段如下:MOV DPTR,#PORTMOV A,#DATAMOVX DPTR,AINC DPTRMOVX DPTR,A其中第二次I/O写是一个虚拟写过程,其目的只是产生一个WR信号.启动D/A.[实验电路][实验步骤]⒈DAC0832的片选CS0832接CS0,输出端OUT接示波器探头.⒉将短路端子DS的1、2短路.[程序框图][参考程序]实验接线:DAC0832的片选CS0832接CS0,输出端OUT接示波器探头.NAME T92 ;0832数模转换实验PORT EQU 0CFA0HCSEG AT 4000HLJMP STARTCSEG AT 4100HSTART: MOV R1,#02H ;置计数初值于R1ACALL PRG1 ;显示锯齿波MOV R1,#01H ;置计数初值于R1ACALL PRG2 ;显示三角波MOV R1,#01H ;置计数初值于R1ACALL PRG3 ;显示正弦波LJMP START ;转START循环显示PRG1: MOV DPTR,#PORT+1 ;DAC寄存器端口地址送DPTR MOV A,#00H ;初值送ACCLOOP: MOV B,#0FFHLOOP1: MOV DPTR,#PORT ;DAC输入寄存器端口地址MOVX DPTR,A ;送出数据INC DPTR ;加一,为DAC寄存器端口地址MOVX DPTR,A ;启动转换INC A ;数据加一CJNE A,#0FFH,LOOP1MOV A,#00HDJNZ B,LOOP1DJNZ R1,LOOP ;计数值减到40H了吗?没有则继续RET ;产生锯齿波PRG2: MOV DPTR,#PORT+1MOV A,#00HLP0: MOV B,#0FFHLP1: MOV DPTR,#PORT ;LP1循环产生三角波前半周期MOVX DPTR,AINC DPTRMOVX DPTR,AINC ACJNE A,#0FFH,LP1 ;数据为FFH吗?不等则转LP1MOV R2,#0FEHLP2: MOV DPTR,#PORT ;LP2循环产生三角波后半周期MOV A,R2MOVX DPTR,AINC DPTRMOVX DPTR,A、JNZ R2,LP2DJNZ B,LP1DJNZ R1,LP0 ;计数值到80H则退出执行下一步RETPRG3: MOV B,#00HLP3: MOV DPTR,#DATA0MOV R4,#0FFH ;FFH为DATA0表中的数据个数LP4: MOVX A,DPTR ;从表中取数据MOV R3,DPHMOV R5,DPLMOV DPTR,#PORTMOVX DPTR,AINC DPTRMOVX DPTR,AMOV DPH,R3MOV DPL,R5INC DPTR ;地址下移DJNZ R4,LP4DJNZ B,LP3DJNZ R1,PRG3RETDATA0: DB 80H,83H,86H,89H,8DH,90H,93H,96HDB 99H,9CH,9FH,0A2H,0A5H,0A8H,0ABH,0AEHDB 0B1H,0B4H,0B7H,0BAH,0BCH,0BFH,0C2H,0C5H DB 0C7H,0CAH,0CCH,0CFH,0D1H,0D4H,0D6H,0D8H DB 0DAH,0DDH,0DFH,0E1H,0E3H,0E5H,0E7H,0E9H DB 0EAH,0ECH,0EEH,0EFH,0F1H,0F2H,0F4H,0F5H DB 0F6H,0F7H,0F8H,0F9H,0FAH,0FBH,0FCH,0FDH DB 0FDH,0FEH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FEH,0FDH DB 0FDH,0FCH,0FBH,0FAH,0F9H,0F8H,0F7H,0F6H DB 0F5H,0F4H,0F2H,0F1H,0EFH,0EEH,0ECH,0EAH DB 0E9H,0E7H,0E5H,0E3H,0E1H,0DEH,0DDH,0DAH DB 0D8H,0D6H,0D4H,0D1H,0CFH,0CCH,0CAH,0C7H DB 0C5H,0C2H,0BFH,0BCH,0BAH,0B7H,0B4H,0B1H DB 0AEH,0ABH,0A8H,0A5H,0A2H,9FH,9CH,99HDB 96H,93H,90H,8DH,89H,86H,83H,80HDB 80H,7CH,79H,76H,72H,6FH,6CH,69HDB 66H,63H,60H,5DH,5AH,57H,55H,51HDB 4EH,4CH,48H,45H,43H,40H,3DH,3AHDB 38H,35H,33H,30H,2EH,2BH,29H,27HDB 25H,22H,20H,1EH,1CH,1AH,18H,16HDB 15H,13H,11H,10H,0EH,0DH,0BH,0AHDB 09H,8H,7H,6H,5H,4H,3H,2HDB 02H,1H,0H,0H,0H,0H,0H,0HDB 00H,0H,0H,0H,0H,0H,1H,2HDB 02H,3H,4H,5H,6H,7H,8H,9HDB 0AH,0BH,0DH,0EH,10H,11H,13H,15HDB 16H,18H,1AH,1CH,1EH,20H,22H,25HDB 27H,29H,2BH,2EH,30H,33H,35H,38HDB 3AH,3DH,40H,43H,45H,48H,4CH,4EHDB 51H,51H,55H,57H,5AH,5DH,60H,63HDB 69H,6CH,6FH,72H,76H,79H,7CH,80HEND实验十8253定时器实验[实验目的]⒈习8253扩展定时器的工作原理.⒉习8253扩展定时器的使用方法.[实验设备]EL-8051-III型单片机实验箱[实验内容]向8253定时控制器写入控制命令字,通过示波器观察输出波形.[实验接线]⒈8253的片选CS8253与CS0相连;8253CLK0与CLK3相连;OUT0与8253CLK1相连⒉示波器的信号探头与OUT0相连;OUT1与发光二极管的输入L8相连[实验原理图][程序框图][实验提示]8253是自动控制系统中经常使用的可编程定时器/计数器,其内部有三个相互独立的计数器,分别称为T0,T1,T2.8253有多种工作方式,其中方式3为方波方式.当计数器设好初值后,计数器递减计数,在计数值的前一半输出高电平,后一半输出低电平.实验中,T0的时钟由CLK3提供,其频率为750KHz.程序中,T0的初值设为927CH〔37500十进制〕,则OUT0输出的方波周期为〔37500*4/3*10-6=0.05s〕.T1采用OUT0的输出为时钟,则在T2中设置初值为n 时,则OUT2输出方波周期为n*0.05s.n的最大值为FFFFH,所以OUT2输出方波最大周期为3276.75s<=54.6分钟>.可见,采用计数器叠加使用后,输出周期X围可以大幅度提高,这在实际控制中是非常有用的.[参考程序]NAME T17 ;8253实验CSEG AT 4000HAJMP STARTCSEG AT 4030HSTART: MOV DPTR,#0CFA3HMOV A,#36H ;计数器0为模式3MOVX DPTR,AMOV DPTR,#0CFA0HMOV A,#7CH ;计数值MOVX DPTR,AMOV A,#92HMOVX DPTR,AMOV DPTR,#0CFA3H ;计数器1为模式3 MOV A,#76HMOVX DPTR,AMOV DPTR,#0CFA1HMOV A,#5H ;计数值MOVX DPTR,AMOV A,#05HMOVX DPTR,ASTART1: NOPSJMP START1END。

可编程串行通信接口8250A自发自收实验

可编程串行通信接口8250A自发自收实验

可编程串行通信接口8250A自发自收实验一、实验目的和要求1.了解并行通信的工作原理;2.掌握8250的编程方法。

二、实验内容和原理1.实验内容:对8250编程,实现下列功能:(1)主机键盘输入一个字符,并将字符的ASCⅡ码加1,指向ASCⅡ表中的下一个字符,通过SOUT引脚发送出去;(2)通过SIN引脚接受字符;(3)在屏幕上显示键盘输入的字符和接收到的字符。

这样就实现了CPU自发自收的功能。

线路连接:8250的D7~D0、A2~A0和DISTR、DOSTR引脚与系统数据线、地址线和读写控制线对应连接;片选线CS2接地址译码器输出端;INTRPT引脚与中断请求输入IRQ2端相连;2MHz的时钟信号送到XTIL1;BAUDOUT与RCLK连接;8250数据接收线SIN 与输出线SOUT相连接,是先自发自收。

线路连接如图1所示。

编程提示:8250采用查询方式进行数据通信,一桢数据格式为7位数据位位数据位,一位停止位,奇校验,波特率为2400bps,输入的基准时钟频率为2MHz。

流程图程序:DA TA SEGMENTMES1 DB 'IT WILL DISPLAY ON THE TERMINAL_SCREEN!!',0AH,0DH DB 'PLAY Q KEY EXIT TO DOS',0AH,0DH,0AH,0DH,'$'IOPORT EQU 0D880H-0280HIO8250CS EQU IOPORT+290H ;8250地址IO8250ZD EQU IOPORT+291HIO8250ZS EQU IOPORT+292HIO8250XK EQU IOPORT+293HIO8250MO EQU IOPORT+294HIO8250XZ EQU IOPORT+295HDA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART: MOV AX,DATAMOV DS,AXMOV DX,OFFSET MES1 ;显示提示信息MOV AH,09INT 21HMOV AL,80H ;使DLAB=1,允许写除数寄存器MOV DX,IO8250XK ;线路控制寄存器OUT DX,ALMOV AX,30H ;除数值MOV DX,IO8250CS ;除数寄存器低8位OUT DX,ALMOV AL,AHINC DX ;除数寄存器高8位OUT DX,ALMOV AL,0AH ;7位数据、1位停止位,奇校验MOV DX,IO8250XK ;线路控制寄存器OUT DX,ALMOV AL,10H ;使自检控制位LOOP=1,自检MOV DX,IO8250MO ;MODEM控制寄存器OUT DX,ALMOV AL,00H ;屏蔽中断MOV DX,IO8250ZD ;写中断允许寄存器OUT DX,ALWA T: MOV DX,IO8250XZ ;读线路状态寄存器IN AL,DXTEST AL,00011110B ;出错否?JNZ ERROR ;转到ERRORTEST AL,00000001B ;接受数据就绪否?JNZ RCEVE ;转接收TEST AL,00100000B ;发送寄存器空否?JZ WAT ;不空,返回等待MOV AH,01H ;读键盘INT 21HMOV DX,IO8250CS ;发送下一个字符INC ALOUT DX,ALJMP WAT ;返回RCEVE: MOV DX,IO8250CS ;读接收数据IN AL,DXAND AL,01111111B ;保留7位CHAR: MOV DL,AL ;显示MOV AH,02HINT 21HDEC DLCMP DL,51H ;键入字符是吗‘Q’?JZ QUITCMP DL,71HJZ QUIT ;是,退出JMP WAT ;不是,继续QUIT: MOV AX,4C00H ;退出INT 21HERROR: MOV DX,IO8250XZ ;清除线路状态寄存器IN AL,DXMOV DL,'?' ;显示字符'?'MOV AH,02HINT 21HJMP WAT ;返回继续CODE ENDSEND START2.实验原理8250内部有三种寄存器,8250初始化编程为:a、将80H写入通信线路控制寄存器使最高位为1,建立寄存器和中断允许寄存器的标志。

微机原理实验 可编程并行接口 8255 实验

微机原理实验 可编程并行接口 8255 实验
(4)读写控制逻辑:用来控制把CPU输出的控制字或数据送至相应端口,也由它来控制把状态信息或输入数据通过相应的端口送到CPU。
2、8255A的工作方式:
方式0—基本输入输出方式;方式1—选通输入输出方式;方式2—双向选通输入输出方式
3、8255A的状态字:
图1可编程并行接口8255电路
五、实验电路及连线
1、流水灯实验:
(1)实验连线
该模块的WR、RD分别连到MCU主模块的WR、RD。
该模块的数据(AD0~AD7)、地址线(A0~A7)分别连到MCU主模块的数据(AD0~AD7)、地址线(A0~A7)。
8255模块选通线CS连到MCU主模块的地址A15。
8255的PA0~PA7连到发光二极管的L0~L7。
(2)三个端口A,B和C:A端口包含一个8位数据输出锁存器和缓冲器,一个8位数据输入锁存器。B端口包含一个8位数据输入/输出锁存器和缓冲器,一个8位数据输入缓冲器。C端口包含一个8位数据输出锁存器及缓冲器,一个8位数据输入缓冲器(输入没有锁存器)。
(3)A组和B组控制电路:这是两组根据CPU输出的控制字控制8255工作方式的电路,它们对于CPU而言,共用一个端口地址相同的控制字寄存器,接收CPU输出的一字节方式控制字或对C口按位复位字命令。方式控制字的高5位决定A组工作方式,低3位决定B组的工作方式。对C口按位复位命令字可对C口的每一位实现置位或复位。A组控制电路控制A口和C口上半部,B组控制电路控制B口和C口下半部
(2) I/O输入输出实验:利用8255的A口读取开关状态,8255的B口把状态送发光二极管显示
四、实验原理
1、8255A的内部结构:
(1)数据总线缓冲器:这是一个双向三态的8位数据缓冲器,它是8255A与微机系统数据总线的接口。输入输的数据、CPU输出的控制字以及CPU输入的状态信息都是通过这个缓冲器传送的。

单片机可编程8255接口实验报告

单片机可编程8255接口实验报告

单片机可编程8255接口实验报告可编程8255接口实验报告㈠实验目的1.掌握可编程并行接口芯片的基本工作原理及其使用方,熟悉8255可编程并行I/O扩展接口。

2 .掌握8255可编程并行I/O扩展接口方法,能够利用 8255可编程并行接口芯片设计简单应用系统。

㈡实验器材1 . G6W 仿真器一台2. MCS-51 实验板一台3. PC 机一台4 . 电源一台㈢实验内容及要求1.声光报警器实验8255是可编程的通用并行输入输出扩展接口。

8255芯片的片选信号 CS4及口地址选择线 AA0AA1分别8051的地址线提供。

8255的A 口设置为输入数据端口, B 口设置为输出数据端口,通过控制位操作控制字将 C 口某一位置位或复位,B 口与发光二极管 LED相连,C 口与蜂鸣器相连,读取A 口数据,只要有一位为“ 1”,则点亮发光二极管LED, 同时蜂鸣器响。

2・交通灯控制实验通过并行接口 8255实现十字路 nb 口交通灯的模拟控制。

L6〜L8与PC厂PC7相连,作为南北路口的交通灯,L1〜L3与PC0- PC2相连,作为东西路口的交通等。

编程使六个灯按以下规律变化:南北路口的“绿”灯、东西路口的“红”灯同时亮 30秒(要求有倒计时显示);南北路口的“黄” 灯闪烁若干次,同时东西路口“红”灯继续亮;南北路口的“红”灯、东西路口的“绿”灯同时亮 30秒(要求有倒计时显示);东西路口的“黄”灯闪烁若干次,南北路口的“红”灯继续亮;重复以上步骤。

㈣实验步骤1 .连接8255芯片的片选信号 CS4及口地址选择线AA0 AA1,并根据片选信号及口地址选择线确定 8255的各I/O 口地址和控制字寄存器的地址。

2 .声光报警器实验的连线①8255的A 口的8位根据需要接入高低电平。

②8255的B 口中任一口与 TEST相连,运行程序,即可观察L9发光二极管。

③在实验板上接入蜂鸣器,并且8255的PC7与BEEP相连,运行程序,即可听到蜂鸣器鸣响声。

微机实验_可编程串行通信(8250)

三、实验步骤
微型计算机本身配置了两个串行通信接口,分别为串行口1(COM1)和串行口2(COM2),I/O端口地址分别为3F8H~3FFH和2F8H~2FFH,对外接口采用9针插座。串行通信接口采用8250。
8250寄存器的端口地址如表10-1所示。
表10-1
I/O端口
IN/OUT
DLAB
寄存器名称
60H
1200
00H
30H
2400
00H
18H
4800
00H
0CH
9600
3.中断允许寄存器IER(3F9H)如图10-2所示。
图10-2
4.MODEM控制寄存器MCR(3FCH)如图10-3所示。
图10-3
5.9针串口插座(DB-9)外形如图10-4所示,引脚说明如表10-3所示。
图10-4
表10-3
EXIT:MOVAH,4CH;返回DOS
INT21H
STARTENDP
CODEENDS
ENDSTART
五、实验结论与心得
成绩
教师签名
批改时间
年月日
;内部输出输入反接,中断禁止
MOVAL,13H
OUTDX,AL
MOVDX,3F9H;设中断允许寄存器为0,使4种中断被屏蔽
MOVAL,0H
OUTDX,AL;把接收到的字符显示出来,把键盘输入的字符发
;送出去
FOREVER:MOVDX,3FDH;输入线状态寄存器内容,测试接收是否出错
INAL,DX
TESTAL,1EH
3F8H
OUT
0
数据发送寄存器
3F8H
IN
0
数据接收寄存器
3F8H

可编程并行接口芯片8255的应用实验报告

DL1: MOV R6, #0ABH
DL0: MOV R5, #10H DJNZ R5, $ DJNZ R6, DL0 DJNZ R7, DL1 NOP RET END
程序(思考题)C: #include<reg51.h>
#include<absacc.h> #define uchar unsigned char #define pc8255 XBYTE[0X0002] #define COM8255 XBYTE[0X0003] uchar time; void delay1s()
程序二: ORG 0000H MAIN:MOV DPTR, #0003H
MOV A, #81H MOVX @DPTR, A MOV DPTR, #0002H LOOP:MOVX A, @DPTR SWAP A MOVX @DPTR,A LJMP LOOP END
流程图: 开始 延时
系统初始化 开定时器0 取C口数据 高低半字节交换 数据会送C口
三、实验原理电路图
四、程序清单及流程框图
程序一: ORG 0000H
MAIN:MOV TMOD, #02H MOV TH0, #06H MOV TL0, #06H MOV DPTR, #0003H MOV A, #80H MOVX @DPTR,A MOV R2, #0FFH SETB TR0
LOOP:JNB TF0, LOOP MOV DPTR, #0000H MOV A, R2 MOVX @DPTR,A CPL A MOV R2, A CLR TF0 LJMP LOOP END
五、实验结果
1、程序一:将程序产生的十六进制代码加载到 proteus 中,运行仿真可以在示波器中看到如 图 6.1 所示波形,产生周期为 500us 的连续方波。

硬件实验八8255输入、输出实验

硬件实验⼋8255输⼊、输出实验硬件实验⼋ 8255输⼊、输出实验⼀、实验要求利⽤8255可编程并⾏⼝芯⽚,实现输⼊/输出实验,实验中⽤8255PA ⼝作输出,PB ⼝作输⼊。

⼆、实验⽬的1、了解8255芯⽚结构及编程⽅法。

2、了解8255输⼊/输出实验⽅法。

三、实验电路及连线8255的CS/接地址译码/CS0,则命令字地址为8003H 。

PA0-PA7(PA ⼝)接LED0-LED7(LED )、PB0-PB7(PB ⼝)接K0-K7(开关量)。

数据线、读/写控制、地址线、复位信号板上已接好。

四、实验说明可编程通⽤接⼝芯⽚8255A 有3个8位的并⾏I/O ⼝,它有3种⼯作⽅式。

本实验采⽤的是⽅式0:PA ,PC ⼝输出,PB ⼝输⼊,通过对8255A 编程实现将开关状态送发光⼆极管显⽰。

mode equ 0 ; ⽅式0,PA,PC输出,PB输⼊ PortA equ #8000h ; Port A的地址PortB equ #8001h ; Port BPortC equ #8002h ; Port CCAddr equ 8003h ; 控制字地址Org 0ljmp startorg 0100hstart: mov a, #modemov dptr, #CAddrmovx @dptr , a;实验1:通过PortA输出,控制led灯从左到右逐次点亮EX_A:mov a,#80Hmov dptr,#PortAmov b,#8HOutA:movx @dptr ,arr amov r5,#1call delay ; 延时;实验2:通过PortB将开关状态送 PortA 输出EX_B:mov dptr, #PortBmovx a,@dptrmov dptr, #PortAmovx @dptr, amov r5,#2call delayljmp startdelay:mov r7,#0ddd: djnz r7,ddddjnz r6,ddddjnz r5,dddretend硬件实验九外部中断(急救车与交通灯)⼀、实验要求本实验模拟交通信号灯控制,⼀般情况下正常显⽰,有急救车到达时,两个⽅向交通信号灯全红,以便让急救车通过。

微机原理8259825582538250实验报告

微机原理实验报告姓名:班级:学号:1 8259中断控制器实验31.1 实验目的 (3)1.2 硬件连接 (3)1.3 软件编程 (3)1.4 思考题 (4)2 8255并行接口实验 (5)2.1 实验目的 (5)2.2 硬件连接 (5)2.3 软件编程 (5)2.4 思考题 (6)3 8253可编程定时/计数器 (6)3.1 实验目的 (6)3.2 硬件连接 (6)3.3 软件编程 (6)3.4 思考题 (7)4 8250串行接口实验 (8)4.1 实验目的 (8)4.2 硬件连接 (8)4.3 软件编程 (8)4.4 思考题 (10)5 AD实验 (10)5.1 实验目的 (10)5.2 硬件连接 (10)5.3 软件编程 (11)5.4 思考题 (12)1 8259中断控制器实验1.1 实验目的1. 掌握8259的工作原理。

2. 掌握编写中断服务程序的方法。

3. 掌握初始化中断向量的方法1.2 硬件连接单脉冲发生器输出P+与8259的IR0相连;8259的片选CS8259与CS0相连;8259的INT与8086的INT相连;8259的INTA与8086的INTA相连;CS273与CS1相连;00与LED1相连;1.3 软件编程CODE SEGMENT PUBLICASSUME CS:CODEORG 100HSTART:MOV DX,4A0H //由于连接的CS0,初始化ICW1时,A1=0,为偶地址MOV AX,13H //上升沿触发,单片,要写ICW4OUT DX,AXMOV DX,4A2H //初始化ICW2,A1=1,为奇地址MOV AX,80H // 中断向量码为80HOUT DX,AXMOV AX,01 //初始化ICW4,非自动EOIOUT DX,AXMOV AX,0 //允许所有中断OUT DX,AXMOV AX,0 //把中断服务程序的地址放在中断向量表中DS=0,SI=80H*4=200HMOV DS,AXMOV SI,200HMOV AX,OFFSET HINT //先放IPMOV DS:[SI],AXADD SI,2MOV AX,CS //再放CSMOV DS:[SI],AXSTI //打开中断JMP $HINT:XOR CX,0FFH //取反操作,使得灯闪烁MOV DX,4B0H //CS1的地址4B0H,连在了273上MOV AX,CXOUT DX,AXMOV DX,4A0H //访问OCW2,A0=0,标志位D4=0,D3=0。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验八8250可编程通信实验(与微机)
一、实验目的
了解8250的内部结构、工作原理;了解8250与PCI9052的接口逻辑;掌握对8250的初始化编程方法,学会使用8250实现设备之间的串行通信。

二、实验内容及要求
1、编写程序:通过初始化8250,设置波特率为4800bps(或其它,但与微机部分一致),数据格式为8数据位,1停止位,偶校验;然后打开PC机的串行通信测试软件,向8250发送一批数据,8250接收完数据之后,再将数据依次发送回去。

MSR DW00f6H ;MODEM状态寄存器
DLL DW 00f0H;波特率除数锁存器低位
DLM DW00f1H;波特率除数锁存器高位
ADR DW 00E0H ;用于清除PCI9052上一次写操作产生的地址
IO_Bit8_BaseAddress DW?
msg0 DB ‘BIOS不支持访问PCI $’
msg1 DB ‘找不到Star PCI9052板卡 $’
msg2 DB ‘读8位I/O空间基地址时出错$’
.CODE
START: MOV AX,@DATA
MOV DS,AX
NOP
CALL InitPCI
CALL ModifyAddress ;根据PCI提供的基地址,将偏移地址转化为实地址
CALL INIT8250
START2: MOV CX,10 ;接收数据(接收完设定的数据个数) CALL RECEIVE_GROUP
MOV CX,10 ;发送数据(发完设定的数据个数)
CALL SEND_GROUP
JC WARNING1
CALL IfExit
JZ START2
JMP Exit
WARNING1: JMP Exit
;*************发送一组字符子程序,个数在CX中***********
Send_Group PROC NEAR
LEA SI,Send_Buffer
Send_Group1: LODSB
CALL Send_Byte
JC Send_Group2
LOOP Send_Group1
CLC
Send_Group2: RET
Send_Group ENDP
;*************接收一组字符子程序,存放首地址在DPTR中,个数在R6R7中*********** Receive_Group PROC NEAR
MOV DX,ADR
OUT DX,AL ;用于清除PCI9052上一次写操作产生的地址
LEA DI,Receive_Buffer
Receive_Group1: CALL Receive_Byte
STOSB
LOOP Receive_Group1
CLC
RET
Receive_Group ENDP
INIT8250 PROC NEAR
MOV DX,ISR
MOV AL,06H
OUT DX,AL
MOV DX,LCR
MOV AL,83H ;允许访问波特率因子寄存器
OUT DX,AL
MOV DX,DLL
MOV AL,40 ;除法除数低位寄存器,波特率设为
;4800=(3.072*1000000/16)/DLMDLL
OUT DX,AL
MOV DX,DLM ;00H送高字节寄存器
MOV AL,00H
OUT DX,AL
MOV DX,LCR ;不允许访问波特率因子寄存器
MOV AL,1BH ;数据格式为8数据位,1停止位,偶校

OUT DX,AL
RET
INIT8250 ENDP
;*********发送一个字节子程序,发送A中的数,失败置1CY*********
Send_Byte PROC NEAR
PUSH CX
PUSH AX
MOV CX,1000
MOV DX,LSR
REP11: IN AL,DX
TEST AL,20H
JNZ OUTPORT1
LOOP REP11
POP AX
STC
JMP EXIT8250
OUTPORT1: POP AX
MOV DX,RHR
OUT DX,AL
MOV DX,ADR
OUT DX,AL ;清除PCI9052产生的RHR地址
CLC
EXIT8250: POP CX
RET
Send_Byte ENDP
;*********接收一个字节子程序,接收字节在A中,接收失败置1CY*********
Receive_Byte PROC NEAR MOV DX,LSR Receive1: IN AL,DX TEST AL,1 JZ Receive1 Receive2: MOV DX,RHR IN AL,DX Receive3: RET Receive_Byte ENDP Exit: MOV AH,4CH INT 21H
; IfExit 、InitPCI 、ModifyAddress 子程序请参阅实验二 END START
五、实验过程 1
2、运行程序
3、运行“串口助手(ComPort.EXE)”,设置串口(波特率4800,8个数据位,一个停止位,偶校验),打开串口,选择“HEX发送”、“HEX显示”,向8250发送10个字节数据(输入数据之间用空格分隔),是否能接收到10个字节数据,接收到的数据是否与发送数据一致。

六、实验结果
运行“串口助手(ComPort.EXE)”,设置串口(波特率4800,8个数据位,一个停止位,偶校验),打开串口,选择“HEX发送”、“HEX显示”,向8250发送10个字节数据(输入数据之间用空格分隔),是否能接收到10个字节数据,接收到的数据与发送数据一致。

七、实验总结
通过本次实验,我们了解8250的内部结构、工作原理;了解8250与PCI9052的接口逻辑;掌握对8250的初始化编程方法,学会使用8250实现设备之间的串行通信。

并且通过8250的编程对实验进行了验证。

相关文档
最新文档