C8051F020单片机实验接线表.
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、C8051F020单片机实验接线表(注:黑体部分已调试通过)
3.8 WDT看门狗实验
一、实验目的熟悉汇编语言编程,掌握C8051F020内部WDT的应用。
二、实验内容通过改变延时程序的延时值,使延时值分别小于和大于WDT设置的定时间隔,运行程序,观察P0.0控制的发光二极管L8的变化。
三、实验原理介绍
MCU内部有一个使用系统时钟的可编程看门狗定时器(WDT)。
当看门狗定时器溢出时,WDT将强制CPU进入复位状态。
为了防止复位,必须在溢出发生前由应用软件重新触发WDT。
如果系统出现了软件/硬件错误,使应用软件不能重新触发WDT,则WDT将溢出并产生复位,这样可以防止系统失控。
WDT是一个使用系统时钟的21位定时器。
该定时器检测对其控制寄存器的两次写操作的时间间隔。
如果这个时间间隔超过了编程的极限值,将产生WDT复位。
可以根据需要用软件允许和禁止WDT,或根据需要将其设置为永久性允许状态。
可以通过看门狗定时器控制寄存器(WDTCN)控制看门狗的功能。
(1)允许/复位WDT
看门狗定时器的允许和复位是通过向WDTCN寄存器写入0xA5来实现的。
用户的应用软件应周期性地向WDTCN写入0xA5,以防止看门狗定时器溢出。
每次系统复位都将允许并启动WDT。
(2)禁止WDT
向WDTCN寄存器写入0xDE后再写入 0xAD将禁止WDT。
下面的代码说明禁止WDT的过程:CLR EA ;禁止所有中断
MOV WDTCN,#0DEh ;禁止看门狗定时器
MOV WDTCN,#0ADh
SETB EA ;重新允许中断
必须在4个时钟周期之内写0xDE和写0xAD,否则禁止操作将被忽略。
在这个过程期间应禁止中断,以避免两次写操作之间延时。
(3)锁定WDT
向WDTCN写入0xFF将使禁止功能无效。
WDT一旦被锁定,在下一次复位之前禁止操作将被忽略,写0xFF并不允许或复位看门狗定时器。
如果应用程序想一直使用看门狗,则应在初始化代码中向WDTCN写入0Xff.
(4)设置WDT定时间隔
WDTCN.[2~0]控制看门狗的超时间隔。
超时间隔由下式给出:
T WDT=43+WDTCN[2~0]×T SYSCLK
其中TSYSCLK为系统时钟周期。
对于2MHz的系统时钟,超时间隔的范围是0.032~524ms。
在设置超时间隔是时,WDTCN.7必须为0。
读WDTCN将返回超时间隔的编程值。
在系统复位后,WDTCN.[2~0]为111b.
四、实验程序框图
五、实验步骤
通过调整程序中的延时值(调整RO寄存器值),来判断是否使用WDT复位功能。
A:本程序中,当R0取值小于4F时,程序总的执行小于WDT定时器值,程序不会进入WDT复位,程序正常执行,由P0.0控制发光二极管L8闪烁。
B:当R0取值大于5F时,程序总的执行大于WDT定时器值,程序总是进入WDT复位,p0.0总是保持
在低电平状态。
用导线将P0.0与发光二极管L8相连。
注:光盘已经提供源程序,可直接打开项目:路径:“DICE-C8051f实验例程”→“WDT看门狗实验”→项目名“WDT-RESET”→汇编源程序“WDT-RESET.ASM”。
六、程序清单文件名:WDT-RESET·ASM
;程序看门狗(WDT)实验。
;R0值小于4F时,程序中我们取值3F,编译、运行程序,程序总的执行时间小于WDT定时器值,程序正常执行,P0.0控制发光二极管闪烁。
;R0值大于5F时,程序中我们取值6F,编译、运行程序,程序总的执行时间大于WDT定时器值,程序总是进入WDT复位,P0.0总是保持在低电平。
$INCLUDE(C8051F020.INC) ; Register definition file.
ORG 0000H
LJMP START
ORG 00B3H ;End of Interruper Vector space
Start: MOV WDTCN, #07h ;设置WDT定时间隔
MOV XBR0, #00h ;Initial XBR0
MOV XBR1, #00h ;Disable all maps
MOV XBR2, #40h ;Enable the IO_Crossbar
MOV P0MDOUT,#0FFH
MOV OSCXCN, #00h ;Initial OSCXCN
MOV OSCICN, #04h ;Initial OSCICN as 2.0MHz
MOV CPT0CN, #8fh ;Enable comparator0(CPT0) and select P/N hysteresis
CLR P0.0
MOV WDTCN, #0a5h ;Reset WDT
MOV R0, #3fh ;Set data in r0 less than 4fh can avoid reseting LCALL Delay ;and more than 5fh can cause reseting program Wait: SETB P0.0
MOV R0, #3fh ;设置R0小于4FH可以避免进入WDT复位,程序正常工作
LCALL Delay ;如果设置R0大于5FH,则使延时值大于WDT设置的定时间
MOV WDTCN, #0a5h ;隔,使程序不断进入WDT复位状态
LJMP Wait ;Wait here
Delay: MOV R1, #0fh
Delay1: MOV R2, #0ffh
Delay2: DJNZ R2, Delay2
DJNZ R1, Delay1
DJNZ R0, Delay
RET
END
3.9 定时器实验
一、实验目的掌握C8051F020内部定时器/计数器的应用。
二、实验内容本文件是LED灯闪烁实验程序;使用定时器0定时1秒,LED灯每隔1秒亮1秒;使用外部22.1184MHz晶振。
三、实验原理介绍
C8051F020内部有5个计数器/定时器T0,T1,T2,T3和T4。
这些计数器/定时器都是16位,其中T0、T1、T2与标准8051中的计数器/定时器兼容。
T3、T4可用于ADC、SMBus或作为通用定时器使用,T4还可用作C8051F02x中第二串口(UART1)的波特率发生器。
这些计数器/定时器可以用于测量时间间隔,对外部事件计数或产生周期性的中断请求。
定时器0和定时器1几乎完全相同,有4种工作方式。
定时器2增加了一些时器0和定时器1中所没有的功能。
定是器3与定时器2类似,但没有捕捉和波特率发生器方式。
定时器4与定时器2完全相同,可用作UART1的波特率发生器。
下表所列为定时器的工作方式:
本实验中使定时器0工作在方式1(TMOD=0x01),TIM0定时器时钟为系统时钟的1/12(CKCON=0x00)。
具体寄存器定义请参照教科书。
四、实验程序框图
五、实验步骤
P3.5口接L1发光二极管。
调入程序、装载、运行,观察发光二极管是否每隔1秒亮1次。
注:光盘已经提供源程序,可直接打开项目:路径:“DICE-C8051f实验例程”→“timer_test”→项目名“TIMER”。
3.10 内部时钟选择实验
一、实验目的掌握C8051F020内部系统时钟的使用。
二、实验内容本文件是LED灯闪烁实验程序;根据程序选用芯片内部不同的系统时钟。
三、实验原理介绍
C8051Fxxx MCU有一个内部振荡器和一个外部振荡器驱动电路,每个驱动电路都能产生系统时钟。
MCU在复位后从内部振荡器启动,内部振荡器的启动是瞬间完成的。
内部振荡器可以被允许和禁止,其振荡频率可以通过对内部振荡控制寄存器(OSCICN)编程为2MHZ、4MHZ、8MHZ或者16MHZ。
位7 MSCLKE 时钟丢失检测器允许位
0禁止时钟丢失检测器
1允许时钟丢失检测器;检测到时钟丢失将触发复位
位6~5 未用。
读=00b,写=忽略
位4 IFRDY 内部振荡器频率准备好标志
0内部振荡器频率不是按IFCN位指定的速度运行
1内部振荡器频率按IFCN位指定的速度运行
位3 CLKSL 系统时钟源选择位
0选择内部时钟源作为系统时钟
1选择外部时钟源作为系统时钟
位2 IOSCEN 内部振荡器允许位
0内部振荡器禁止
1外部振荡器禁止
位1~0 IFCN1~0 内部振荡器频率控制位
00 内部振荡器频率控制为2MHZ
01 内部振荡器频率控制为4MHZ
02 内部振荡器频率控制为8MHZ
03 内部振荡器频率控制为16MHZ
四、实验程序框图
五、实验步骤
P3.5接L1发光二极管。
调入程序、装载、运行,观察发光二极管是否闪烁。
修改OSCICN 寄存器的值,可设置系统时钟分别工作在2、4、8、16MHZ,观察发光二极管L1在不同系统时钟下的闪烁速度。
OSCICN=0x87 ; 16MHZ
OSCICN=0x86 ; 8MHZ
OSCICN=0x85 ; 4MHZ
OSCICN=0x84 ; 2MHZ
注:光盘已经提供源程序,可直接打开项目:路径:“DICE-C8051f实验例程”→“内部时钟选择实验”→项目名“SYSCLK”。
3.11 外部时钟选择实验
一、实验目的掌握C8051F020外部系统时钟的使用。
二、实验内容本文件是LED灯闪烁实验程序;选用芯片外部晶振作为系统时钟
三、实验原理介绍
外部振荡器需要有外部振荡源连接到XTAL1/XTAL2引脚才能工作,外部振荡源可以是外部谐振器、并行方式的晶体、电容或RC网络。
通过对OSCXCN寄存器编程来选择振荡源,也可以使用一个外部CMOS时钟接到XTAL1引脚提供系统时钟。
即使在MCU已经切换到内部振荡器时,外部振荡器仍可保持允许状态并运行。
XTAL1和XTAL2引脚的耐压值是3.6V,而不是5V。
位7 XTLVLD 外部晶体振荡器有效标志(只在XOSCMD=11x是有效)0晶体振荡器未用或未稳定
1晶体振荡器正在运行并且工作稳定
位6~4 XOSCMD2~0 外部振荡器方式位
00x 关闭。
XTAL1引脚内部接地
010 系统时钟为来自XTAL1引脚的外部CMOS时钟
011 系统时钟为来自XTAL1引脚的外部CMOS时钟的2分频
10x RC/C振荡器方式2分频
110晶体振荡器方式
111晶体振荡器方式2分频
位3 保留。
读=无定义,写=忽略
位2~0 XFCN2~0 外部振荡器频率控制位
四、实验程序框图
五、实验步骤
P3.5接L1发光二极管。
调入程序、装载、运行,观察发光二极管L1是否每隔1秒亮一次注:光盘已经提供源程序,可直接打开项目:路径:“DICE-C8051f实验例程”→“外部时钟选择实验”→项目名“SYSCLK”。
3.12 PCA(可编程计数器)频率输出
一、实验目的熟悉PCA 的频率输出功能。
二、实验内容此程序利用捕捉/比较模块0 实现PCA 频率输出方式,将捕捉/比较模块0 的
CEX0 配置在P0.0 口,用示波器测量P0.0 的波形,如果正确有不断变化频
率的方波输出。
三、实验原理介绍
C8051F02x单片机内部有一个可编程计数器阵列(PCA)。
PCA提供增强的定时器功能,与标准8051的计数器/定时器相比,它需要较少的CPU干预。
PCA由一个专用的16位计数器/定时器和5个16位捕捉/比较模块组成,每个捕捉/比较模块有自己的I/0线(CEXn)。
当被允许时,I/O线通过交叉开关连到端口I/O(见对端口和交叉开关译码器的介绍)。
计数器/定时器由一个可编程的时基信号驱动,时基信号可以在6个输入源中选择:定时器0溢出、ECI线上的外部时钟信号、系统时钟12分频、系统时钟4分频、系统时钟和外部振荡器时钟8分频。
C8051F02x的PCA有6种工作方式:边沿触发捕捉、软件定时器、高速输出、频率输出、8位脉宽调制器和16位脉宽调制器。
本实验主要介绍频率输出方式:
C8051F02x的PCA有频率输出方式,用该方式可在对应的CEXn引脚产生可编程频率的方波。
捕捉/比较寄存器的高字节保持输出电平改变前要计的PCA时钟数。
所产生的方波的频率由下式定义:
fCEXn=fPCA/(2*PCA0CPOHn)
其中:fPCA是由方式寄存器PCA0MD中的CPS2~0位选择的PCA时钟的频率。
捕捉/比较模块的低字节与PCA0计数器的低字节比较;两者匹配时,CEXn的电平发生改变,高字节中的偏移值被加到PCA0CPLn。
注意:在该方式下,如果允许模块匹配(CCFn)中断,则发生中断的速率为2fCEXn。
通过置位PCA0CPMn寄存器中ECOMn、TOGn和PWMn位来允许频率输出方
式。
四、实验程序框图
五、实验步骤
(1)下载例程并运行,用示波器量测P0.0 的波形观察变化的方波。
(2)在例程里改变PCA 中断服务子程序(void PCA_ISR(void))中PCA0CPH0 所加的值,看频率变化的幅度比较于上次的是否有所改变。
注:光盘已经提供源程序,可直接打开项目:路径:“DICE-C8051f实验例程”→“PCA频率输出”→项目名“PCA频率输出”。
3.13 PCA(可编程计数器)捕捉功能
一、实验目的熟悉PCA 的边沿触发捕捉功能。
一、实验内容
(1)此程序利用捕捉/比较模块0 实现PCA 边沿触发的捕捉方式,将捕捉/比较模块0 的
CEX0 配置在P0.0 口,且配置成下降沿捕捉。
(2)此例程从p1.6 脚模拟下降延,实验前用跳线将P1.6 与P0.0 短接作为捕捉/比较
模块0 的外部触发沿。
(3)从p1.6 脚模拟出60000 个下降延,每一个下降沿捕捉进入一次PCA 捕捉中断,在
中断服务子程序中用一个变量计数,程序运行结束变量值是否是60000。
三、实验原理介绍
在边沿触发的捕捉方式,CEXn引脚上出现的电平跳变导致PCA捕捉PCA计数器/定时器
的值,并将其装入到对应模块的16位捕捉/比较寄存器(PCA0CPLn和PCA0CPHn)。
PCA0CPMn寄存器中的CAPPn和CAPNn位用于选择触发捕捉的电平变化类型:低电平到高电平(正沿)、高电平到低电平(负沿)或任何变化(正沿或负沿)。
当捕捉发生时,PCA0CN 中的捕捉/比较标志(CCFn)被置为逻辑1,并产生中断请求(如果CCF中断被充许)。
当CPU转向中断服务程序时,CCFn位不能被硬件自动清除,必须用软件清0。
四、实验程序框图
五、实验步骤
(1)用导线将P0.0与P1.6连接起来。
(2)下载例程并运行,60000 个模拟下降沿发出后,计数变量j 的值是否是60000
(3)例程适当修改,用外部的信号源触发捕捉功能,看程序是否正常运行。
注:光盘已经提供源程序,可直接打开项目:路径:“DICE-C8051f实验例程”→“PCA 捕捉功能”→项目名“PCA 捕捉功能”。
3.14 PCA 输出16 位PWM 实验
一、实验目的熟悉PCA 的16 位脉宽调制器方式。
二、实验内容此程序利用捕捉/比较模块0 实现PCA 的16 位脉宽调制器方式,将捕捉/
比较模块0的CEX0 配置在P0.0 口,用示波器量测P0.0 的波形会有PWM
波形输出。
三、实验原理介绍
C8051F02x的PCA有16位脉宽调制方式。
在该方式下,16位捕捉/比较模块定义PWM信号低电平时间的PCA0时钟数。
当PCA0计数器与模块的值匹配时,CEXn的输出被置1;当计数器溢出时,CEXn输出被置1;当计数器溢出时,CEXn输出被置为低电平。
为了输出一个占空比可变的波形,新值的写入应与PCA0CCFn匹配中断同步。
PCA0CPMn寄存器中的ECOMn、PWMn和PWM16n位置1,将被允许16位脉冲宽度调制器方式。
为了输出一个占空比可变的波形,应将CCFn设置为逻辑1以允许匹配中断。
16位PWM方式的占空比由正式给出:
占空比=(65536-PCA0CPn)/65536
由上式可知,最大占空比为100%(PCA0CPn=0),最小占空比为0.0015%(PCA0CPn=0XFFFF)。
可以通过ECOMn位清0产生0%的占空比。
注意:当向PCA0的捕捉/比较寄存器写入一个16位数值时,应先写低字节。
四、实验程序框图
五、实验步骤
(1)下载例程并运行,用示波器量测P0.0 的波形观察PWM 的波形。
(2)在例程里改变PCA 初始化子程序(void PCA_Init (void))中捕捉模块0 寄存器PCA0CPH0 和PCA0CPL0 的值,看脉宽比较于上次的是否有所改变。
注:光盘已经提供源程序,可直接打开项目:路径:“DICE-C8051f实验例程”→“PCA脉宽调制”→项目名“PCA脉宽调制”。
3.17 电压比较器实验
一、实验目的掌握C8051F020 比较器的使用。
二、实验内容
程序可完成CP1 比较器的比较功能,使用内部电压基准,用基准电压作为比较信号电压,实验开始前将CP1N 用导线接至VREF 脚。
三、实验原理介绍
C8051F02x单片机内部有两个片内比较器,每个比较器都有输入引脚,每个比较器的输出都可以经I/O交叉开关(或端口1 MUX)连到外部引脚,当被分配了封装引脚时,每个比较器输出都可以被编程为工作漏极开路或推挽方式.
每个比较器的回差电压都可以通过对应的比较器控制寄存器(CPT0CN,CPT1CN)用软件编程.用户既可以对回差电压值(这里指输入电压)编程,也可以对门限电压两侧的正向和负向回差对称度编程.比较器的输出可以被软件查询,也可以作为中断源.每个比较器都可以被单独允许或禁止(关断).当被禁止时,比较器的输出(如果已通过交叉开关或端口1 MUX分配到I/O引脚)缺省值为逻辑低电平,它的中断能力被停止,电源电流降到1uA。
比较器的输入可以承受-0.25V~(AV+)+0.25V的外部驱动电压而不至损坏或发生工作错误。
四、实验程序框图
0五、实验步骤
用基准电压作为比较信号基准,CP1-接VREF,用电位器从3.3V分压输出接至CP1+,调节电位器输出电压大、小于VREF看发光二极管L2的变化(CP1+>CP1-时,L2灯亮;CP1+<CP1-时,L2灯熄灭)。
CP1+接AV3,CP1-接AGND时,CP1+>CP1-时,L2灯亮;
CP1+接AGND,CP1-接AV3时,CP1+<CP1-时,L2灯灭;
L2接P2.4;
注:光盘已经提供源程序,可直接打开项目:路径:“DICE-C8051f实验例程”→“电压比较器实验”→项目名“电压比较器实验”。
3.18 外部中断实验
一、实验目的熟悉C8051F020 外部中断6/7 的使用。
二、实验内容
此程序测试C8051F020的中断6、7,可在相应的两个中断中设断点观察,当单脉冲按钮按下之后,进入中断处理时发光二极管也同时闪烁一次。
三、实验原理介绍
CIP-51包含一个扩展的中断系统,支持22个中断源,每个中断源有两个优先级。
中断源在片内外设与外部输入之间的分配随器件的不同而变化。
每个中断源可以在一个SFR中有一个或多个中断标志。
当一个外设或外部源满足有效的中断条件时,相应的中断标志被置为逻辑1。
如果中断被允许,在中断标志被置位时产生中断。
一旦当前指令执行完,CPU产生一个LCALL到预定地址,开始执行中断服务程序(ISR)。
每个ISR必须以RETI指令结束,使程序回到中断前执行的那条指令的下一条指令。
如果中断未被允许,中断标志将被硬件忽略,程序继续正常执行(中断标志置1与否不受中断允许/禁止状态的影响)。
每一个中断源都可以用一个SFR(IE~EIE2)中的相关中断允许位来允许或禁止,但必须先将EA位(IE.7)置1,以保证每个单独的中断允许位有效。
不管每个中断允许位的设置如何,EA位清0将禁止所有中断。
本实验主要介绍C8051F020 外部中断6/7(对应P3.6和P3.7)。
P3.6和P3.7可被配置为边沿触发的中断源。
用IE6CF(P3IF.2)和IE7CF(P3IF.3)位可以将这两个中断源配置为下降沿或上升沿触发。
当检测到宽大P3.6和P3.7有下降沿或上升沿发生时,P3IF寄存器中对应的外部中断标志(IE6或IE7)将被置1。
如果对应的中断被允许,将会产生中断,CPU将转向对应的中断向量地址。
位7 IE7 外部中断7标志位
0 P3.7引脚没有检测到下降沿或上升沿
1当检测到P3.7引脚的下降沿或上升沿时,该标志由硬件置位
位6 IE6 外部中断6标志位
0 P3.7引脚没有检测到下降沿或上升沿
1当检测到P3.7引脚的下降沿或上升沿时,该标志由硬件置位
位5~4 未使用.读=00b,写=忽略
位3 IE7CF 外部中断7边沿配置位
0外部中断7由IE7输入的下降沿触发
1外部中断7由IE7输入的上升沿触发
位2 IE6CF 外部中断6边沿配置位
0外部中断6由IE6输入的下降沿触发
1外部中断6由IE6输入的上升沿触发
位1~0 未使用.读=00b,写=忽略
四、实验程序框图
五、实验步骤
P2.0接L7;P2.1接L8;P3.6接”下降沿脉冲”;P3.7接”下降沿脉冲”.
按下单脉冲按钮,JP7产生一个下降沿脉冲,进入中断后 ,相应发光二极管也同时闪烁一次. 注:光盘已经提供源程序,可直接打开项目:路径:“DICE-C8051f实验例程”→“外部中断实验”→项目名“外部中断实验”。