单片机应用系统实验Word格式文档下载.docx
《单片机应用系统实验Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《单片机应用系统实验Word格式文档下载.docx(21页珍藏版)》请在冰豆网上搜索。
乘10
ADDA,@R0;
加下一位的值
INCR0;
指向下一单元
MOVR4,A;
结果存入R4
DJNZR7,LP1;
转换未结束则继续
SJMPMAIN;
设置断点,观察实验结果R4中的内容
END
2.将16位二进制整数存入R3R4寄存器中,转换为十进制整数,以组合BCD形式存储在RAM的20H、21H、22H单元中。
=============================================================
二进制整数(16位)转换为十进制整数(组合BCD)
0--FFFFH(R3R4)==>
0--65535
MOVR0,#22H;
转换结果低位地址
MOVA,R0
PUSHACC;
ACC表示累加器A的直接地址
MOVR7,#03H
MOV@R0,A;
结果存储地址清零
DECR0
DJNZR7,LP1
POPACC
MOVR0,A
MOVR7,#16
LP2:
PUSHACC
CLRC
MOVA,R4;
R4中为二进制数的低位
RLCA
MOVA,R3;
R3中为二进制数的高位
MOVR3,A
MOVB,#03H
LP3:
MOVA,@R0
ADDCA,@R0;
执行乘2操作
DAA;
十进制调整
MOV@R0,A;
结果保存
DJNZB,LP3
DJNZR7,LP2
LJMPMAIN;
设置断点观察结果,可进行下一次转换
3.通过查表的方法将16进制数转换为ASCII码;
查表程序设计,将十六进制数0~F通过查表的方法
转换为ASCII码
MOVDPTR,#ASCTAB;
表格首地址送DPTR
MOVA,R7;
R7中为待转换的数
ANLA,#0FH;
取低4位
MOVCA,@A+DPTR;
查表
MOVR5,A;
低4位转换结果送R1
MOVA,R7
ANLA,#0F0H;
取待转换数的高4位
SWAPA;
高4位与低4位交换
MOVR6,A;
高4位转换结果送R2
设置断点观察结果
ASCTAB:
DB30H,31H,32H,33H,34H
DB35H,36H,37H,38H,39H
DB41H,42H,43H,44H,45H,46H
4.通过查表的方法实现y=x2,其中x为0~9的十进制数,以BCD码表示,结果仍以BCD码形式输出。
查表程序,用程序实现Y=X*X,X为0到9的十进制数,
用BCD码(00H到09H)表示,将X的平方,即Y也以BCD码
的形式保存到R1中.
MOVDPTR,#SQR;
取表格首地址
要计算的值
SJMPMAIN
SQR:
DB00H,01H,04H,09H,16H
DB25H,36H,49H,64H,81H
实验二片内I/O口及中断应用实验
了解P1口作为输入输出方式使用时,CPU对P1口的操作方式。
了解MCS-51单片机的中断原理,掌握中断程序的设计方法。
PC机一台,TD-NMC+教学实验系统,连接线若干
⑴ 按实验内容要求完成硬件连线;
⑵ 编写实验程序,经编译、链接无误后,启动调试功能;
⑶ 观察实验现象,并分析原因;
⑷ 按复位键退出调试状态。
1.片内I/O口应用实验
P1口是8位准双向口,每一位均可独立定义为输入输出。
编写实验程序,将P1口的低4位定义为输出,高4位定义为输入,数字量从P1口的高4位输入,从P1口的低4位输出控制发光二极管的亮灭。
============================================================
文件名:
功能说明:
数字量输入输出实验,P1口高4位输入,低4位输出
LJMPSTART
START:
ORLP1,#0F0H;
P1口高四位为输入
MOVA,P1;
读P1口的值
A中高,低4位交换
MOVP1,A;
输出到P1口
SJMPSTART
2.片内中断系统实验
⑴定时器中断
单片机集成的定时器可以产生定时中断,利用定时器0和定时器1,编写实验程序在及引脚上输出方波信号,通过示波器观察实验现象并测量波形周期。
改变计数值,重新运行程序,反复验证程序功能。
================================================================
采用定时器的中断,在与引脚上输出周期波形.
ORG0000H
LJMPSTART
ORG000BH
LJMPTIMER0
ORG001BH
LJMPTIMER1
ORG0100H
MOVP1,#0FFH
MOVTH0,#0F8H;
初始化定时器0计数初值
MOVTL0,#00H
MOVTH1,#0F8H;
初始化定时器1计数初值
MOVTL1,#00H
MOVTMOD,#11H;
设置定时器工作模式为方式1
MOVTCON,#50H;
启动定时器
MOVIE,#8AH;
使能中断
SJMP$
TIMER0:
CPL;
定时器0中断服务程序,对引脚取反
重新装入计数初值
RETI;
中断返回
TIMER1:
定时器1中断服务程序
MOVTH1,#0F8H
RETI
END
⑵外部中断
手动扩展外部中断INT0、INT1,当INT0产生中断时,使LED8亮8灭闪烁4次;
当INT1产生中断时,使LED由右向左流水显示,一次亮两个,循环4次。
先按KK1-,观察实验现象,然后按KK2-,观察实验现象。
51单片机加入了中断系统,从而提高了CPU对外部事件的处理能力和响应速度。
增强型单片机SST89E554RC共有8个中断源,即外部中断0(INT0)、定时器0(T0)、外部中断1(INT1)、定时器1(T1)、串行中断(TI和RI)、定时器2(T2)、PCA中断和Brown-out中断。
======================================================================
外部中断INT0,INT1操作.
外部中断0:
使发光二极管闪烁4次.
外部中断1:
使发光二极管由右向左流水显示,一次亮两个LED.
ORG0003H
LJMPEINT0
ORG0013H
LJMPEINT1
MOVP1,#00H
SETBIT0;
定义外部中断0为边沿触发
SETBEX0;
使能外部中断0
SETBIT1;
定义外部中断1为边沿触发
SETBEX1;
使能外部中断1
SETBEA;
使能总中断
SJMP$
EINT0:
MOVR7,#04H;
外部中断0中断服务程序
ELP0:
ACALLDELAY;
调用延时程序
MOVP1,#00H
ACALLDELAY
DJNZR7,ELP0
RETI
EINT1:
MOVA,#03H;
外部中断1中断服务程序
MOVR7,#10H
ILP1:
MOVP1,A
RLA
DJNZR7,ILP1
DELAY:
MOVR6,#0FFH;
延时子程序
DLP1:
MOVR5,#0FFH
DLP2:
DJNZR5,DLP2
DJNZR6,DLP1
RET
实验三定时器/计数器应用实验
1.了解MCS-51单片机定/计数器的工作原理与工作方式;
2.掌握定时/计数器T0和T1在定时器和计数器两种方式下的编程;
3.学习定时/计数器T2的可编程时钟输出功能。
四、实验原理
通常,8051单片机内部有2个16位定时/计数器,即定时器0(T0)和定时器1(T1)。
增
强型单片机SST89E554RC内部还有一个16位定时器T2,与其相关的特殊功能寄存器有TL2、
TH2、RCAP2L、RCAP2H、T2CON等。
定时器/计数器2控制寄存器(T2CON)各位的含义简述如下:
TF2:
定时器溢出标志,当定时器溢出时置位,必须由软件清除。
当RCLK=1或TCLK=1
时此位将不会被置位。
EXF2:
定时器2外部标志,当EXEN2=1并且T2EX引脚上出现负跳变引起捕捉或重载发
生时此位置1。
如果定时器2中断使能,EXF2=1会引起中断,此位必须软件清除。
DCEN=1
时,EXF2不会引起中断。
RCLK:
接收时钟标志,RCLK=1,串行口使用T2的溢出脉冲作为方式1和3下的接收时
钟;
RCLK=0,串行口使用T1的溢出脉冲作为接收时钟。
TCLK:
发送时钟标志,与RCLK的作用相同。
EXEN2:
定时器2外部使能标志。
EXEN2=1且T2未被用于串口时钟时,若T2EX引脚上
出现负跳变则出现捕捉或重载。
EXEN2=0时,T2忽略T2EX引脚上的变化。
TR2:
启动/停止定时器2,为1时启动定时器2。
C/T2#:
定时器/计数器选择。
C/T2#=1为计数功能;
C/T2#=0为定时功能。
CP/RL2#:
捕捉/重载标志。
CP/RL2#=1,当EXEN2=1且T2EX引脚上出现负跳变时捕
捉发生。
CP/RL2#=0,T2溢出时重载发生,或当EXEN2=1且T2EX引脚上出现负跳变时重
载发生。
如果RCLK=1或TCLK=1,此位会被忽略,T2溢出时自动重载。
定时器/计数器2模式寄存器(T2MOD)各位的含义简述如下:
T2OE:
定时器2输出使能位。
DCEN:
递减计数使能位。
五、实验内容
1.使用定时器0与定时器1进行定时,在和引脚上输出方波信号,通过示波器
观察波形输出,测量并记录方波周期。
=======================================================================
使用定时器0和定时器1在与引脚上输出方波.
设置定时器工作方式为方式1
MOVTH0,#0F8H;
装入定时器0的计数初值
MOVTL0,#00H
MOVTH1,#0F8H;
装入定时器1的计数初值
SETBTR0;
SETBTR1
MLP1:
JNBTF0,MLP2;
判定时器0溢出标志
重装定时器0的计数初值
CPL
CLRTF0;
清溢出标志
MLP2:
JNBTF1,MLP1;
判定时器1溢出标志
MOVTH1,#0F8H
MOVTL1,#00H
CLRTF1
AJMPMLP1
2.将定时/计数器1设定为计数器方式,每次计数到10在引脚上取反一次,硬件连接如图
所示,按单次脉冲KK1,观察发光管D0的状态,每10次变化一次。
利用计数器1,在计数10次后对引脚取反一次
AJMPSTART
MOVTMOD,#60H;
设置定时器/计数器1为计数器方式,且为方式2
MOVTH1,#0F6H;
装入计数初值
MOVTL1,#0F6H
SETBTR1;
启动计数
判溢出标志
CPL;
取反
CLRTF1;
3.定时器2可以作为时钟发生器使用,并在引脚上输出占空比为50%的方波。
编程定时器2,使用示波器测量输出时钟,测量时钟周期;
假定需要输出1MHz的方波信号,试修改程序,并使用示波器测量,验证程序的正确性。
引脚与T2复用,除作为普通I/O引脚外,还有两个功能,即为定时/计数器2输入外
部时钟,输出占空比为50%的周期时钟。
如果将T2配置为时钟发生器,那么必须将C/T2#设置为0,将T2OE设置为1,并设置TR2
为1以启动定时器。
输出时钟的频率取决于晶振频率以及捕捉寄存器的重载值,公式如下:
输出频率=晶振频率÷
[n×
(65536-RCAP2H,RCAP2L)]
其中n=2(6时钟模式)或n=4(12时钟模式)
晶振频率为,工作于12时钟模式下,输出频率的范围为:
42Hz~。
使用定时器2作为时钟发生器,测量引脚输出,测量周期.
T2CONEQU0C8H;
定义特殊功能寄存器
T2MODEQU0C9H
RCAP2LEQU0CAH
RCAP2HEQU0CBH
MOVRCAP2H,#0FFH;
改变RCAP2H,RCAP2L中的值可以改变时钟频率
MOVRCAP2L,#00H
MOVT2MOD,#02H;
设置T2工作于时钟输出模式下
MOVT2CON,#04H;
启动定时器T2
实验四看门狗实验
了解看门狗的工作原理,学习看门狗的编程方法。
⑴按图连接实验电路图;
⑵编写实验程序,编译、链接无误后启动调试;
⑶允许实验程序,LED闪烁;
⑷按单次脉冲KK1-,对WDT停止刷新;
⑸经过大概3秒钟,可观察软件界面,产生复位,程序停止运行(注意界面变化);
⑹改变WDT的超时周期,反复实验几次,验证看门狗功能。
每次重新运行程序前,都应该先停止调试,然后重新启动调试,这样方可保证系统正常工作。
SST89E554RC提供了一个可编程看门狗定时器(WDT),可以防止软件跑飞并自动恢复,提高系统的可靠性。
用户程序中如果使用了看门狗,那么必须在用户自己定义的时间内刷新WDT,亦称“喂狗”。
若在规定的时间内没有刷新WDT,则产生内部硬件复位。
WDT以系统时钟(XTAL1)作为自己的时基,WDT寄存器每隔344064个时钟加1,时基寄存器(WDTD)的高8位被用作WDT的重载寄存器。
WDT的结构框图如图3-4-1所示。
WDT超时周期计算如下:
周期=(255-WDTD)×
344064÷
fCLK(XTAL1)
看门狗定时器控制寄存器(WDTC)
各位说明如下:
WDOUT:
看门狗输出允许
0:
看门狗复位不在复位引脚上输出
1:
如果看门狗复位允许位WDRE=1,看门狗复位将在复位脚上输出复位信号32个时钟
WDRE:
看门狗定时器复位允许
禁止看门狗定时器复位
允许看门狗定时器复位
WDTS:
看门狗定时器复位标志
外部硬件复位或上电会清除此位,向此位写1会清除此位,若由于看门狗引起的复位将不影响此位。
看门狗溢出,此位置1
WDT看门狗定时器刷新
刷新完成,硬件复位此位。
软件设置此位以强迫看门狗刷新,俗称“喂狗”。
SWDT启动看门狗定时器
停止WDT
启动WDT
看门狗定时器数据/重载寄存器(WDTD)
学习SST89E554RC的看门狗功能模块,编写实验程序,程序正常运行时8个LED闪烁,
通过按键使看门狗产生超时,引起系统复位。
看门狗实验,程序运行时LED闪烁.使用按键使看门狗产生
超时,引起系统复位.系统复位,软件停止按钮变灰.
WDTDEQU85H;
看门狗定时器数据/重载寄存器
WDTCEQU0C0H
WDTBIT0C1H;
看门狗定时器刷新位
AJMPEINT0