C8051F020开发板原理图
C8051单片机原理及应用2
2.1 C8051F系列单片机总体结构 系列单片机总体结构 2.2 C8051F020存贮器组织 存贮器组织 2.3 CIP-51指令介绍 CIP-51指令介绍 2.4 中断系统 2.5 端口输入 输出 端口输入/输出
1
2.1 C8051F系列单片机总体结构 C8051F系列单片机总体结构
16
2.2.3 特殊功能寄存器
0x80 -0xFF :直接寻址存储器空间为特殊功能寄存 的地址空间。 器SFR(Special Function Registers)的地址空间。 的地址空间 与内部RAM高128地址在物理上是两个空间。 高 地址在物理上是两个空间。 与内部 地址在物理上是两个空间 SFR 提供对 提供对CIP-51的资源和外设的控制及 的资源和外设的控制及CIP-51与 的资源和外设的控制及 与 这些资源和外设之间的数据交换。 这些资源和外设之间的数据交换。 CIP-51有120多个 有 多个SFR,具体见 表格。 多个 ,具体见SFR表格。 表格
•片内、 片外程序存储器(8031和8032没有片内程序存储器) 片内、 片外程序存储器 程序存储器( 没有片内程序存储器) 片内 和 没有片内程序存储器 •片内、 片外数据存储器 片内、 片内 片外数据存储器
从功能寻址上可分为: 从功能寻址上可分为
• 程序存储器、 内部数据存储器、特殊功能寄存器、位地址 程序存储器、 内部数据存储器、特殊功能寄存器、 空间和外部数据存储器5大部分 空间和外部数据存储器 大部分
17
常用的特殊功能寄存器
ACC (Accumulator)累加器:存放运算的操作数和结 累加器: 累加器 果 B (B Register)寄存器:乘除法中与 寄存器: 寄存器 乘除法中与ACC配合使用 配合使用 SP(Stack Pointer)8位堆栈指针:复位值为 ( 位堆栈指针: ) 位堆栈指针 复位值为0x07, , 使用时需要重新赋值。 使用时需要重新赋值。 DPTR (Data Pointer)16位的数据指针:访问外部存储 位的数据指针: 位的数据指针 器时使用,用于寄存器间接寻址。分为DPH、DPL。 器时使用,用于寄存器间接寻址。分为 、 。
C8051F020概述
9
特殊功能寄存器
SFRs 提供了MCU 资源与外设的控制与数据交换
C8051F020的特殊功能寄存器比典型的8051多两倍左右
C8051F020 增加的SFRS提供了 访问配置并访问此MCU 的子系统的 功能.
这一特性容许它在增加新的功能后还保留了与MCS-51 指 令集兼容的特点。
以0X0或0X8结尾的特殊功能寄存器(例如: P0, TCON, P1, SCON, IE, 等.) 即可以按字节寻址也可以按位寻址
10
特殊功能寄存器
F8 F0 E8 E0
SPI0CN
B ADC0CN ACC
PCA0H
SCON1 PCA0L XBR0
PCA0CPH0
SBUF1 PCA0CPL0 XBR1
TL2 ADC0GTL ADC0CF
DAC1L
TH2 ADC0GTH P1MDIN P74OUT
DAC1H
DAC1CN
SMB0CR
SMB0ST A
SADEN0 OSCXCN SADDR0
ADC0LTL ADC0L FLSCL SADEN1
ADC0LTH ADC0H FLACL EMI0CN
B8
B0
A8 A0
8-bit SAR模拟—数字转换器 (ADC1) 端口1可以被配置为模拟输入 8通道输入多路复用器和可编程增益放大器 ADC 通过它的SFRS进行配置
15
数字—模拟转换器
2个 12-bit 数字—模拟 转换器:DAC0 和 DAC1
DAC通过 VREFD 输 入引脚提供参考电压 DACs 可以作为比较器 参考输入
同时端口1的引脚可以 用作ADC1的模拟输入
CPU新介绍--C8051F020单片微控制器
第二章C8051F020单片微控制器2.1 C8051系列单片机简介C8051F020是美国Silicon Laboratories公司生产的ISP Flash微控制器。
C8051F020系列器件使用Silicon Labs的专利CIP-51微控制器内核。
CIP-51与MCS-51TM指令集完全兼容,可以使用标准803x/805x的汇编器和编译器进行软件开发。
CIP-51内核具有标准8052的所有外设部件,包括5个16位的计数器/定时器、两个全双工UART、256字节内部RAM、128字节特殊功能寄存器(SFR)地址空间及8/4个字节宽的I/O端口。
然而与传统的8051系列单片机相比,C8051F020具有许多其它的优点,如:1.速度提高CIP-51采用流水线结构,与标准的8051结构相比指令执行速度有很大的提高。
在一个标准的8051中,除MUL和DIV以外所有指令都需要12或24个系统时钟周期,最大系统时钟频率为12-24MHz。
而对于CIP-51内核,70%的指令的执行时间为1或2个系统时钟周期,只有4条指令的执行时间大于4个系统时钟周期。
因此,CIP-51工作在最大系统时钟频率25MHz时,它的峰值性能达到25MIPS。
2.JTAG技术C8051单片机内部预设了JTAG模块,它使得每一个单片机芯片都具有完整的在线调试功能,而不必使用复杂的仿真调试工具。
3.FLASH在线编程技术C8051系列的FLASH型单片机不但可以采用外部编程器进行烧写,用户还可以利用自己的程序修改FLASH的内容,而且不需要外加编程电压,可以方便地实现软件升级。
4.扩展的中断系统扩展的中断系统向CIP-51提供22个中断源(标准8051只有7个中断源),允许大量的模拟和数字外设中断微控制器。
一个中断驱动的系统需要较少的MCU干预,因而有更高的执行效率。
在设计一个多任务实时系统时,这些增加的中断源是非常有用的[12]。
第2讲 C8051F020单片机总体结构及CIP51内核
PSW.0
P
▼CY(PSW.7)进位/借位标志位。若ACC在运算过程中
发生了进位或借位,则CY=1;否则=0。它也是布尔处理 器的位累加器,可用于布尔操作。
▼AC(PSW.6)半进位/借位标志位。若ACC在运算过程
中,D3位向D4位发生了进位或借位,则CY=1,否则=0。机 器在执行“DA A”指令时自动要判断这一位,我们可以暂 时不关心它。
2、系统复位源框图
3、上电复位/掉电复位
上电复位:在上电期间,器件保持在复位状态,/RST引脚被驱动到低电平,
直到VDD上升到超过VRST电平。从复位开始到退出复位状态要经过一个延时。
上电和VDD监视器复位时序
掉电复位:
当发生掉电或因电源波动导致VDD降到VRST以下时,电源监视器 将/RST引脚驱动为低电平并使CIP-51保持复位状态。当VDD又回到高 于VRST的电平时,CIP-51将退出复位状态。
高速微控制器内核
数字 IO
模拟外设
2.1.1 高速控制器内核
◆高速、流水线结构的8051 兼容的CIP-51 内核(可达 25MIPS) ◆64K 字节可在系统编程的FLASH 存储器 ◆4352(4096+256)字节的片内RAM
◆全速、非侵入式的在系统调试接口(片内)
◆时钟电路 ◆片内看门狗定时器、VDD 监视器
P1MDOUT:端口0输出方式寄存器
Байду номын сангаас
(6) 配置端口引脚的输入方式
通过设置输出方式为“漏极开路”并向端口数据寄存器中的相应 位写‘1’将端口引脚配置为数字输入。
例如:
设置P3MDOUT.7 为逻辑‘0’,并设置P3.7 为逻辑‘1’ 即可将P3.7 配置为数字输入。
C8051单片机基础 第二章 C8051F单片机结构及原理 ppt课件
ppt课件
16
2.2 C805lF单片机的结构与原理
2.2.1 C8051F02x单片机的组成与结构
C8051F020单片机以8051内核为中心, 通过SFR总线、外部数据存储器总线、系 统时钟线、复位线等与64KB闪存、4KB XRAM、数字功能模块(UART、SPI、定时器 等)、模拟功能模块(比较器、A/D、D/A 等)、片上时钟系统和JTAG逻辑电路等相 连。是一个完整的单片机片上系统,可以 用作为一个闭环测量控制系统。
ppt课件
26
2.2 C805lF单片机的结构与原理
2.2.1 C8051F02x单片机的组成与结构
3)两路12位数/模转换器 把12位数字量转换为电压量,可以产
生连续变化的波形,2路信号可同步输出。 4)两个模拟比较器 (1)具有正向与负向等8种可编程回差电压值; (2)可用于产生中断或复位。
ppt课件
ppt课件
10
2.1 C8051F的CIP-51内核
2.1.3 CIP-51内核的基本部件
4.存储器接口
C8051F单片机中大部分系列都有位 于片上的外部数据存储器空间RAM(称为 XRAM),除此,还可以向片外扩展64KB RAM。存储器接口就是用于控制与管理 C8051F单片机片上和片外的数据存储器, 它们都需用MOVX指令访问。
2.1.3 CIP-51内核的基本部件
数据总线缓冲器的作用是在CPU内外 数据传送时予以缓冲;地址寄存器用于存 放存储器或输入输出端口的地址值;内核 的复位源与时钟信号由核外的片上系统提 供。
ppt课件
C8051F020单片机说明
C8051F020开发板说明书V1.0.02012年3月22日目录第一章 概述 (1)第二章 开发板简介 (2)2.1 开发板原理框图 (2)2.2 开发板实物图 (2)2.2.1 本开发板的外扩展资源和扩展接口 (2)2.2.2 本开发板的平面图 (3)第三章 开发板硬件电路说明 (4)3.1 硬件电路简介 (4)3.2 电源电路 (4)3.3单片机复位电路 (4)3.4 ZLG7289电路原理图 (5)3.5 LED电路原理图 (6)3.6 LCD接口电路 (7)第四章 开发板注意事项 (8)4.1注意事项 (8)4.2开发板跳线使用方法 (8)第一章 概述本说明书是C8051F020开发板的硬件使用说明书,详细描述了020开发板的硬件构成、原理,以及它的使用方法。
开发板用USB JTAG对C8051F020芯片进行编程,C8051F020有64个I/O而我们开发板通过排针引出了其中的44个I/O口,板上有标识(也可查看原理图或PCB图)。
引出来的I/O口可以供用户配置。
第二章 开发板简介2.1 开发板原理框图本开发板主要用到了C8051F020芯片(内置A/D D/A和比较器等)和周立功的ZLG7289芯片,020芯片通过SPI方式和ZLG7289完成数据传递,ZLG7289控制按键和数码管显示。
原理框图如下:图2-1 开发板原理框图2.2 开发板实物图2.2.1 本开发板的外扩展资源和扩展接口部分接口说明:JTAG接口:本板卡和USB Debug Adaptor仿真器连接,通过本接口用户可实现在线仿真。
LCD接口: 本板液晶用MzL05-12864AD/DA接口:本板的AD/DA接口都来自020内置的AD/DA另外的外扩资源和接口如下图所示:数码管AD 接口比较器接口P7口P3.0~ P3.6P0口P2口P1口3.2 JTAG3.3V/GNDDAC 接口LCD 接口LED ZLG72895vGNDP6口C8051F0203.3V/GND 按键电源开关复位键开发板实物图2.2.2 本开发板的平面图平面图上的位置和板卡的位置一一对应,详细的说明请看后面章节的图2-2 说明。
第2章 C8051F单片机的结构与原理
MOV R0,#34h
MOVX A,@R0
;地址低字节→ R0
;(0x1234)→ A 25
EMI0CF寄存器
R/W R/W R/W R/W R/W R/W R/W 位1 R/W 位0 复位值 00000011
SFR地址:0xA3
24
1.XRAM存储器空间的访问
16位形式的MOVX指令,访问DPTR 指向的存储器 单元。 如:
MOV DPTR,#1234h
MOVX A,@DPTR
;立即数0x1234 → DPTR
;(0x1234)→ A
8位形式的MOVX指令,用EMIOCN存放待访问地址 的高8位,由R0或R1给出待访问地址的低8位。如:
4352(4096+256)字节的片内RAM
可寻址64K字节地址空间的外部数据存储器接口 硬件实现的SPI、SMBus/ I2C 和两个UART 串行接口
5个通用的16位定时器/计数器
具有5个捕捉/比较模块的可编程计数器/定时器阵列(PCA) 片内看门狗定时器(Watchdog)、VDD 监视器和温度传感器
//关中断
// FLWE(FLSCL.0)臵1,允许用户程序写/擦FLASH //将PSWE、PSEE臵1
*pwrite = 0;
PSCTL = 0x01; for(i=0;i<n;i++)
//启动擦除过程
// PSEE=0, PSWE=1(禁止擦除)
*pwrite++ = *pgen++; // 写入n个数据 PSCTL=0x00; FLSCL = 0x00; EA=1; } //开中断
C8051F020开发板电路图
DGND
A
DGND
DGND
DGND
DGND
3
2
1
输入电容应当尽量靠近Ui和地。
对于LM2576-5.0V: Ui=+9V、L=100uH,ILmax=2.0A; Ui=+9V、L=68uH,ILmax=3.0A!
L1 BEAD J14 JUMPER 1 2 U2 1 VIN LM2576V FB OUT + 3 5 C20 100uF/50V C18 0.1uF C19 0.01uF GND ON/OFF 1000uF/25V D4 1N5822 4 L2 68uH + C17 C21 0.1uF C22 0.01uF 2 1 J8 2 VDD=+5V TE VDD=+5V
75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51
5 6 7 8 5 6 7 8 5 6 7 8 DVDD=+3.3V DGND 5 6 7 8 5 6 7 8 5 6 7 8
4 3 2 1 4 3 2 1 4 3 2 1 4 3 2 1 4 3 2 1 4 3 2 1
100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76
1 3 5 7 9 11 13 15 17 19
2 4 6 8 10 12 14 16 18 20
DGND IOVDD P4.1 P4.3 P4.5 P4.7 P5.1 P5.3 P5.5 P5.7
D
DGND
P4_5 DVDD=+3.3V J4 DGND
C8051F020实验指导书
盛年不重来,一日难再晨。
及时宜自勉,岁月不待人。
单片机实验指导书目录第一章:实验设备简介 (1)1.1 系统实验设备的组成 (1)1.2 Silicon Labs C8051F 单片机开发工具简介 (1)1.3 DICE-C8051F嵌入式实验/开发系统简介 (3)第二章集成开发环境KEIL C软件使用指南 (7)2.1 KEIL C软件具体使用说明 (7)第三章实验指导 (20)3.1 C8051F 单片机I/O 口交叉开关设置 (20)3.2 数字I/O端口实验 (22)3.3 定时器实验 (24)3.4 外部中断实验 (27)3.5 键盘显示实验 (29)3.6 六位动态LED数码管显示实验 (31)3.7 RS3232串口通讯实验 (33)3.8 综合设计 (35)使用特别说明:(1) 每次实验前,请仔细阅读实验指导,连线完毕,检查无误后,方可打开电源。
即连线时必须在断电状态下。
(2) 程序运行过程中,不要关闭电源,如果要断电,必须停止运行程序,并且退出程序调试状态,否则会引起KEIL C软件非正常退出,甚至引起DICE-EC5仿真器工作异常。
(3) 如出现上述(2)的的误操作,引起DICE-EC5仿真器工作异常,可对DICE-EC5仿真器进行复位。
(在光盘中找到文件夹“USB Reset”中的“USB Debug Adapter Firmware Reset”文件,双击运行,在弹出的对话框中点击“Update firmware”按钮,在提示成功后,点击“OK”按钮,退出复位程序。
DICE-EC5仿真器即可正常工作。
在下一次调试、下载程序时会提示“Do you want to update serial adapter now? ”,点击“确定”即可。
第一章:实验设备简介1.1 系统实验设备的组成DICE-C8051F嵌入式实验/开发系统由C8051F020 CPU 板、DICE-EC5仿真器和系统实验板三部分组成,应用该设备可进行片上系统单片机较典型应用的实验,请参见以下介绍。
C8051F020硬件电路设计
C8051F020硬件电路设计一直觉得自己设计的C8051F020电路板的过程比较凌乱,想找个时间来总结下,所以就有了这篇文章。
其实这个电路板的功能很简单,主要就是板上设计了LCD12864、LCD1602以及键盘的接口,但是在设计过程中出现了很多问题,现在来做个总结。
首先来个电路板的照片如图1所示。
电路板所以的IO口都用牛角座引出,方便连接。
图1 系统板实物图片1、关于ADC的设计。
去年在研究C8051F020片内的ADC0的时候发现一个奇怪的问题,每当采采集电压达到3V左右的时候采集的数字量就已经达到了最大值4095(参考电压接的是3.3v),即使电压再升高,比如达到3.2V,采集的电压的数字量始终是4095(12位的ADC),当时想当然的认为是器件的非线性问题,但是官方给出的数据是转换误差为:±1LSB,当时就一直怀疑芯片给的数据有问题。
为了验证是否是非线性问题,于是就自己做测试,采集到的数据如图2所示。
图2 ADC0测试曲线从图2中看到器件在0~3 V左右的时候采集的数据线性是非常好的,只是在达到3 V以后数据始终是4095。
这到底是什么问题呢,当时由于时间紧,没有仔细的读数据手册,只是在程序中把参考电压的值改为3.1V(测试的时候3.1V 达到极限),这样程序处理也是没有问题的。
现在又要从新设计这个板子,由于时间比较充裕,自己就发誓一定要找到原因。
首先排除的是器件的非线性问题,这个从图2中就已经证实了。
那么是数据手册给的数据有问题么?虽然有这个怀疑,但是想来数据手册给的数据应该是没问题的,那么估计是没有仔细了解数据手册的内容,于是乎就仔细的研读了数据手册。
在一个叫电压基准的电气特性的表格中找到了答案,如图3所示。
图3 电压基准的电气特性从图3中看到外部基准电压的范围为1~A V+-0.3V,这里的A V+为3.3V,也就是说外部输入的参考电压必须比输入给ADC的电源电压小0.3V。
第二章 C8051F单片机结构及原理
本章将以C8051F系列单片机中功能较全面、应用较广泛的C8051F02x子系列为典型例子,重点介绍以CIP-51为内核的C8051F系列单片机的结构、工作原理、存储器组织、时钟系统及复位源等。
2.1 C8051F的CIP-51内核C8051F系列单片机的微控制器内核称为CIP-51,是在Intel公司标准8位8051单片机的组织结构和功能的基础上加以改进和提高形成的。
所有C8051F系列单片机的微控制器内核都完全相同。
2.1.1 CIP-51内核的组成及结构CIP-51内核是C8051F的中央处理器(CPU)部分,主要完成运算和控制功能,管理整个单片机系统的各个外设的工作。
CIP-51的原理框图如下图所示,其组成与结构和8051的原理结构图比较相似,图的上半部分几乎和8051完全一样,下半部分也有近一半组成和8051—样。
2.1.1 CIP-51内核的组成及结构不同的部分主要是增加了流水线结构、存储器和特殊功能寄存器SFR接口部分、电源控制与管理寄存器等。
CIP-51微控制器中的SFR接口用于控制与管理模拟和数字外设功能部件,大大增强了处理能力。
2.1.2 CIP-51内核的特点(1)主要功能部件及组成与8051相同;(2)与MCS-51指令系统完全兼容;(3)时钟频率为0~25MHz,执行速度一般可达25兆指令/秒,有的型号最高执行速度可达100兆指令/秒;2.1.2 CIP-51内核的特点(4)增加了流水线结构,70%指令的执行时间为1个或2个系统时钟周期;(5)与模/数、数字外设有关的SFR移到核外,通过SFR接口与CPU交换信息;(6)中断系统扩展为可处理22个中断源;(7)复位与时钟电路不包括在核内;(8)具有程序和数据存储器安全管理功能。
2.1.2 CIP-51内核的特点2.1.3 CIP-51内核的基本部件1. 中央处理器(CPU)中央处理器是单片机最核心的部分,主要完成运算和控制功能,与通用微处理器是基本相同的,只是它的控制功能更强。
达达电子C8051F020、120最小系统使用说明及原理图
C8051F020、120最小系统使用说明C8051f020/C8051f120最小系统是我们达达电子工作室自主制作的,为了方便大家开发使用,排针都是单排引出,可以作为核心板插在你的板子上使用!特点:1、引出所有的IO口,ADC,DAC,CP端口!即所有的端口基本引出2、板上留有3V和5V的电源!方便使用!5V是用TL431基准设计的,相对稳定!3、端口是单排设计,间距标准方便你做实验整排引出IO 或者作为核心板层叠在你的板子上!方便设计,减少干扰!4、芯片所有的电源端口都加有滤波105和104电容增强其抗干扰的能力!5、电压基准上加有104电容!内部基准输出也加有104和4.7uF的滤波电容!使ADC和DAC更加稳定!此板子图片为:1、板子电源电路020和120芯片工作电压为3.3V,输入电压经过1117-3.3V稳压,输入电压支持5~9V,我们选择的是优质1117芯片。
输入电源测试可以高至12V,但是不建议大家长期使用,以免烧坏芯片!最后电源电压经过2R电阻和105、104电容滤波分别送入MCU得到A VCC和DVCC!以增强MCU工作电压的稳定性这个5V用TL431做的电流经过8050放大,最大可以支持200MA的电流,要使用此5V电压,系统的输入电压要高于6V。
注意:这边过大电流会击穿三极管导致电压高于5V使用的时候需要经常测试是不是5V,经过板子售后情况,建议大家还是少用5V的系统和c8051f的IO连接!最好加有限流电阻,以免经常烧坏MCU!2、板子上电源基准介绍按板子上的介绍,左边是TL431做的2.5V基准!使用的时候需要根据板子上的实际电压来恒定。
一般我们的2.5V误差不会很大,中间一列3个分辨是DAC基准VERFD,ADC0基准VREF0,ADC1的基准VREF1,右边的一列都是内部基准输出VREF,使用跳冒选择。
如需要VREFD使用外部基准2.5V就把跳冒跳在左面。
如果想使用芯片的内部基准就把跳冒跳在右边!3、板子MONEN跳冒的使用如图J8左边为GND中间为MONEN右边是VCC。
C8051F320单片机原理及引脚及封装
C8051F320单片机原理及引脚及封装(USB复位中断、端点0中断、端点1输入中断、端点2输出中断),然后根据不同的中断来源跳入相应的处理模块以进行不同的中断处理,并在处理完毕后返回。
其中,端点0是每个USB设备都必须支持的默认控制传输端点,主要用于主机对USB设备的配置、状态信息的获取和设备错误的纠正等,它的中断处理模块由控制输出和控制输入两部分组成。
每次传输首先由设置事务开始,然后根据设置事务数据不同的中断来源跳入相应的处理模块以进行不同的中断处理,并在处理完毕后返回。
同时在ISR中,固件将数据包从C8051F320的USB引擎内部缓冲区移到一个自定义的数据缓冲区,并在随后请求清零其内部缓冲区,以使其能够继续接收新的数据包。
然后返回到主循环,检查自定义缓冲区内是否有新的数据并开始其它的任务。
由于这种结构,主循环只用检查自定义缓冲区内需要处理的新数据,专注于新数据的处理,而ISR 也能够以最大速度进行数据的传输。
这样,程序对USB的操作更加简单,也便于程序的维护。
主程序和端点0的控制传输程序流程分别如图3、图4所示。
端点1和端点2的程序流程与之类似。
4数据的接收和显示在主机中安装基于C8051F320USB设备的驱动程序(可以在新华龙网站上下载)之后,该设备就会被默认成该主机的一个串口,因此在主机的处理中可以将它当作一个虚拟的串口进行处理,读取其数据就如读串口数据一样方便,很快就能够建立快速通信平台。
主机软件采用VC++开发的,串行通信部分采用API函数直接进行编写。
它为应用程序提供了通过串行接口收发数据的方法。
主机软件使用API文件函数进行串口通信的控制。
具体函数以及使用,可以查阅MSDN。
将基于C8051F320的USB接口电路应用到仓库视频监控系统中,。
C8051F020数码管
#include <c8051f020.h>#include <intrins.h>#include <absacc.h>#include <stdlib.h> //标准函数#include <stdio.h> //I/O口函数#define _Nop() _nop_()#define uchar unsigned char#define uint unsigned int#define LEDCTL0Low P4&=~0x01;#define LEDCTL0High P4|=0x01;#define LEDCTL1Low P4&=~0x02;#define LEDCTL1High P4|=0x02;#define LEDCTL2Low P4&=~0x04;#define LEDCTL2High P4|=0x04;#define LEDCTL3Low P4&=~0x08;#define LEDCTL3High P4|=0x08;#define LEDPort P5#define ScanKeyPort P2//-----------------------------------------------------------------------------//--------------------------------------------------------------------//全局变量//--------------------------------------------------------------------uchar code LEDSEG1[]= {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xc6,0x89,0x86};//0~9,C,H,E,正uchar code LEDSEG2[]= {0xC0,0xCF,0xA4,0x86,0x8B,0x92,0x90,0xC7,0x80,0x82,0xF0,0x89,0xB0};//0~9,C,H,E,倒unsigned char keyvalue;//--------------------------------------------------------------------//函数声明//--------------------------------------------------------------------void SYSCLK_Init (void);void PORT_Init(void);void Delay( uint ); //延时子程序unsigned char key_in(void);void key_display();//--------------------------------------------------------------------// 主函数//--------------------------------------------------------------------void main (void){unsigned char keydata;WDTCN = 0xde;WDTCN = 0xad; //关闭WDTSYSCLK_Init ();PORT_Init();while(1){keydata=key_in(); //读按键if(keydata!=0) //有按键按下,显示对应的按键{switch(keydata){case 0x11: keyvalue=1;break;case 0x21: keyvalue=5;break;case 0x41: keyvalue=9;break;case 0x12: keyvalue=2;break;case 0x22: keyvalue=6;break;case 0x42: keyvalue=0;break;case 0x14: keyvalue=3;break;case 0x24: keyvalue=7;break;case 0x44: keyvalue=11;break;case 0x18: keyvalue=4;break;case 0x28: keyvalue=8;break;case 0x48: keyvalue=12;break;}}keydata=0;key_display();}}//-----------------------------------------------------------------------------// 系统时钟配置//-----------------------------------------------------------------------------void SYSCLK_Init (void){int i; // delay counterOSCXCN = 0x67; // start external oscillator with// 22.1184MHz crystal for (i=0; i < 256; i++) ; // Wait for osc. to start upwhile (!(OSCXCN & 0x80)) ; // Wait for crystal osc. to settleOSCICN = 0x88; // select external oscillator as SYSCLK// source and enable missing clock// detector}//-----------------------------------------------------------------------------// I/O配置//-----------------------------------------------------------------------------void PORT_Init(){XBR2 = 0x40; // Enable crossbar and weak pull-ups P2MDOUT = 0xff;P74OUT = 0xff; //推挽输出}//--------------------------------------------------------------------// 延时//--------------------------------------------------------------------void Delay( uint tt ){while( tt-- );}//--------------------------------------------------------------------// 按键扫描////--------------------------------------------------------------------unsigned char key_in(void){uchar keytemp,scancode,tmpcode;ScanKeyPort=0xf0; //ScanKeyPort --P2keytemp=ScanKeyPort;if ((keytemp&0x70)^0x70){Delay(50000);keytemp=ScanKeyPort;if ((keytemp&0x70)^0x70){scancode = 0xfe;while((scancode&0x10)!=0) // 逐行扫描{ScanKeyPort= scancode; // 输出行扫描码if ((ScanKeyPort&0xf0)!=0xf0) // 本行有键按下{tmpcode = (ScanKeyPort&0xf0)|0x0f;return((~scancode)+(~tmpcode)); /* 返回特征字节码,为1的位即对应于行和列*/}else{scancode = (scancode<<1)|0x01; // 行扫描码左移一位}}}}return(0);//返回0,表示没有按键按下}//--------------------------------------------------------------------// 显示//--------------------------------------------------------------------void key_display(){uchar *p;p=&LEDSEG1[0];p=p+keyvalue;LEDPort=*p;LEDCTL0Low;Delay(10);LEDCTL0High;}。
C8051F020单片机实验接线表
一、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,#0ADhSETB EA ;重新允许中断必须在4个时钟周期之内写0xDE和写0xAD,否则禁止操作将被忽略。
在这个过程期间应禁止中断,以避免两次写操作之间延时。
(3)锁定WDT向WDTCN写入0xFF将使禁止功能无效。
WDT一旦被锁定,在下一次复位之前禁止操作将被忽略,写0xFF并不允许或复位看门狗定时器。
如果使用程序想一直使用看门狗,则应在初始化代码中向WDTCN写入0Xff.(4)设置WDT定时间隔WDTCN.[2~0]控制看门狗的超时间隔。
单片机C8051F020及其在仪器和仪表中的应用
单片机C8051F020及其在仪器和仪表中的应用1引言当前,随着科学技术及工农业生产水平的不断提高,对相应的仪器仪表也提出越来越高的要求,因此,仪器仪表需扩展大量的外围功能部件来满足仪器仪表复杂性、高性能及智能化的要求。
广告插播信息维库最新热卖芯片:UC3842AD MAX881REUB D8279C-2PEB22554HTV1.3AD835AN TA8403K UT6164C32Q-6IDT7142LA35J TL16C750FN FDP7045L这种方法虽然满足了仪器的复杂性要求,但随之而来的问题是由于系统扩展的过于复杂而造成系统可靠性降低,故障率增加,查找故障困难,从而失去了智能化仪器仪表的优势,如果能够将功能复杂的众多外围功能部件全部或大部分集成到系统所使用的单片机内部,则可大大提高仪器仪表系统的可靠性,同时又使系统的成本得以降低,还可利用单片机片内资源在不增加硬件成本的情况下增强仪器的性能,因而该方案是提高仪器仪表可靠性及性能的行之有效的方法,而美国Cygnal公司的C8051F020单片机便是1款可满足复杂高性能仪器仪表要求的单片机。
C8051F020单片机是集成在1块芯片上的混合信号系统级单片机,具有与MCS51内核及指令完全兼容的微控制器。
除了具有标准8051机的数字外设部件外,片内还集成了数据采集与控制系统中常用的模拟部件和其它数字外设及功能部件,主要包括模拟多路选择器、可编程增益放大器、ADC、DAC、电压比较器、电压基准、温度传感器、SMBus/I2C、UART、SPI、可编程计数器/定时器阵列、定时器、I/O端口、电源监视器、看门狗定时器和时钟振荡器等,且该单片机内部具有JTAG和调试电路,通过JATG接口可以使用安装在最终应用系统产品上的单片机进行非侵入、全速及在系统调试。
2功能与特点(1)25MIPS高速流水线式与8051机完全兼容的CIP-51内核。
(2)真正12位100KBps、8通道带可编程增益放大器的ADC。