Mcs51系列单片机实训指导书 实验四 8253方波实验 一、实验目的与要求 了解8253的内部结构、工作原理;了解8253与单片机的接口逻辑;熟悉8253的控制寄存器和初始化编程方法,熟悉8253的6种工作模式。 二、实验设备 STAR系列实验仪一套、PC机一台 三 、实验内容 1、编写程序:使用8253的计数器0和计数器1实现对输入时钟频率的两级分频,得到一个周期为1秒的方波,用此方波控制蜂鸣器,发出报警信号,也可以将输入脚接到逻辑笔上来检验程序是否正确。 2、连接线路,验证8253的功能,熟悉它的使用方法。 四、实验原理图 U35D0D1D2D3D4D5D6D7CSCS5(0B000H)RDWRA0A0A1A1876543212122231920D0D1D2D3D4D5D6D7CSRDWRA0A18253OUT2GATE2CLK2OUT0GATE0CLK010119GATE0VCC2M(B2)CLK0131415OUT1Ctrl(D1)VCCGATE1OUT1GATE1CLK1171618OUT2GATE2CLK2 五、实验步骤 1、连线说明: D5区:CS、A0、A1 D5区:CLK0 D5区:OUT0 D5区:OUT1 —— A3区:CS5、A0、A1 —— B2区:2M —— D5区:CLK1 —— E3区:Ctrl(蜂鸣器) D5区:GATE0、GATE1 —— C1区的VCC 2、测试实验结果:蜂鸣器发出时有时无的声音;用逻辑笔测试蜂鸣器的输入端口,红绿灯交替点亮。 六、演示程序 COM_ADDR T0_ADDR T1_ADDR
STAR:
XDATA XDATA 5XDATA ORG LJMP ORG MOV 0B003H 0B000H 0B001H 0000H STAR 0100H SP,#60H
21
6Mcs51系列单片机实训指导书
MOV MOV MOVX CLR MOV MOVX MOV MO VX MOV MOV
MOVX CLR MOV
MOVX MOV MOVX SJMP END
A,#35H DPTR,#COM_ADDR
@DPTR,A ;计数器T0设置在模式2状态,BCD码计
数
A DPTR,#T0_ADDR @DPTR,A A,#10H @DPTR,A ;CLK0/1000 A,#77H DPTR,#COM_ADDR
@DPTR,A ;计数器T1为模式3状态,输出方波,BCD码计数 A DPTR,#T1_ADDR @DPTR,A A,#10H @DPTR,A ;CLK1/1000 $ ;OUT1输出频率为1s的方波
七、实验扩展及思考
1、8253还有其它五种工作方式,其它工作模式下,硬件如何设计?程序如何编写? 2、使用8253,编写一个实时钟程序。
22
Mcs51系列单片机实训指导书
实验五
8250可编程通信实验(与微机)
一、实验目的与要求
了解8250的内部结构、工作原理;了解8250与单片机的接口逻辑;掌握对8250的初始化编程方法,学会使用8250实现设备之间的串行通信。
认真预习,做好实验前的准备工作,填写实验报告
二、实验设备
STAR ES598PCI实验仪一套、PC机一台
三、实验内容
1、编写程序:通过初始化8250,设置波特率为4800bps(或其它,但与微机部分一致),数据格式为8数据位,1停止位,偶校验;然后打开PC机的串行通信测试软件,向8250发送一批数据,8250接收完数据之后,再将数据依次发送回去。
2、按图连线,运行程序,观察实验结果,掌握8250的各项功能及编程方法。
四、实验原理图
U43D0D1D2D3D4D5D6D7SIN1234567891011121314151617181920D0VDDD1RID2DCDD3DSRD4CTSD5MRD6OUT1D7DTRRCLKRTSSINOUT2SOUTINTRCS0NCCS1A0CS2A1BAUDOUTA2XINADSXOUTCSOUTWRDDISWRRDVSSRDPC16450ComputerTXD(E6)RXD(E6)SOUTVCCCS1(0F000H)CS21WR3.072MHZR12730PFC651M50PFC66VCC4039383736353433323130292827262524232221RDRIDCDDSRCTSRSTDTRRTSA0A0A1A1A2A2PC16450
五、实验步骤
1、连线说明: D4区:CS、A0、A1、A2 D4区:SIN、SOUT —— A3区:CS1、A0、A1、A2 —— E6区:RxD、TxD 2、运行程序 3、运行“串口助手(ComPort.EXE)”,设置串口(波特率4800,8个数据位,一个停止位,偶校验),打开串口,选择“HEX发送”、“HEX显示”,向8250发送数据10个数据(输入数据之间用空格分隔),是否能接收到10个字节数据,将接收到的数据发送回微机,接收到的数据是否与发送数据一致。
4、改变传输数据的数目,重复实验,观察结果。
六、演示程序
;8250和PC机通信,需要在PC上运行一个串口软件,并设置与8250相同的波特率 NS8250_Base_Address XDATA 0FF00H
23
Mcs51系列单片机实训指导书
RHR XDATA NS8250_Base_Address ;接收数据缓冲区 THR XDATA NS8250_Base_Address ;发送数据缓冲区 IER XDATA NS8250_Base_Address+1 ;中断控制寄存器 FCR XDATA NS8250_Base_Address+2 ;FIFO控制寄存器 ISR XDATA NS8250_Base_Address+2 ;中断状态寄存器 LCR XDATA NS8250_Base_Address+3 ;串行口控制寄存器 MCR XDATA NS8250_Base_Address+4 ;MODEM控制寄存器 LSR XDATA NS8250_Base_Address+5 ;串行口状态寄存器 MSR XDATA NS8250_Base_Address+6 ;MODEM状态寄存器 DLL XDATA NS8250_Base_Address ;波特率除数锁存器低位 DLM XDATA NS8250_Base_Address+1 ;波特率除数锁存器高位 ORG 0 LJMP STAR ORG 100H STAR: MOV SP,#60H ACALL INIT8250 START2: MOV DPTR,#2000H ;接收数据(接收完设定的数据个数) MOV R6,#00 MOV R7,#10 CALL RECEIVE_GROUP MOV DPTR,#2000H ;发送数据(发完设定的数据个数) MOV R6,#00 MOV R7,#10 CALL SEND_GROUP JNC START2 WARNING1: CLR P1.0 ;P1.0接蜂鸣器,出错报警 SJMP $ ;发送一组字符子程序,数据的首地址在DPTR中,个数在R6R7中 Send_Group: DEC R7 CJNE R7,#0FFH,Send_Group_1 DEC R6 CJNE R6,#0FFH,Send_Group_1 CLR C Send_Group_2: RET Send_Group_1: MOVX A,@DPTR INC DPTR ACALL Send_Byte JNC Send_Group RET ;接收一组字符子程序,存放首地址在DPTR中,个数在R6R7中 Receive_Group: DEC R7
24
Mcs51系列单片机实训指导书
CJNE R7,#0FFH,Receive_Group_1 DEC R6 CJNE R6,#0FFH,Receive_Group_1 CLR C Receive_Group_2: RET Receive_Group_1: ACALL Receive_Byte MOVX @DPTR,A INC DPTR SJMP Receive_Group INIT8250: MOV DPTR,#ISR MOV A,#06H MOVX @DPTR,A MOV DPTR,#LCR
;允许访问波特率因子寄存器 MOV A,#83H
MOVX @DPTR,A MOV DPTR,#DLL MOV A,#40 ;除数低位寄存器,波特率设为4800=(3.072*1000000/16)/DLMDLL MOVX @DPTR,A MOV DPTR,#DLM MOV A,#00H ;00H送高字节寄存器 MOVX @DPTR,A MOV DPTR,#LCR MOV A, #1BH
;不允许访问波特率因子寄存器,数据格式为8数据位,1停止位,偶校验 MOVX @DPTR, A RET ;发送一个字节子程序,发送A中的数,失败置CY Send_Byte: PUSH DPL PUSH DPH PUSH 06H PUSH 07H PUSH ACC MOV R6,#0 MOV R7,#10 MOV DPTR,#LSR REP11: MOVX A,@DPTR JB ACC.5,OUTPORT1 DJNZ R6,REP11 DJNZ R7,REP11 POP ACC SETB C SJMP EXIT8250 ;8250有问题 OUTPORT1: POP ACC
25