c8051f020端口配置说明

c8051f020端口配置说明
c8051f020端口配置说明

C8051F的每个I/O口引脚都可以被配置为推挽或漏极开路输出。同时引入了数字交叉开关,允许将内部数字系统资源映射到P0、P1、P2和P3 的端口引脚。通过设置交叉开关寄存器可将片内的计数器/定时器、串行总线、硬件中断、ADC转换启动输入、比较器输出以及微控制器内部的其他数字信号配置为出现在端口I/O引脚。必须在访问这些外设的I/O之前配置和允许交叉开关。

注意的问题:

1.低端口既能按位寻址,也可以按字节寻址;高端口只能按字节寻址。

2.没有被分配到的引脚作为一般的数字通用I/O口。

3.P1口还可以用作ADC1的模拟输入。

4.P0MDOUT~P3MDOUT用于控制I/O端口每一位的输出状态。

5.EMIF(外部存储器接口)是用于CPU与片外XRAM之间的数据传输通道,通过寄存器EMI0CF 和EMI0CN选择和管理端口实现数据的传输。

6.为了能访问片外存储器空间,必须设置EMI0CN寄存器的内容为片外存储器的空间页地址。

7.如果把外部存储器接口(EMIF)设置在高端口则首先要把EMI0CF的PRTSEL位设置为1,选择高端口,同时选择地址的复用或非复用方式,在把XBR的外部寄存器的EMIFLE位设置为0。

8.复用方式配置:在复用方式下,数据总线和地址总线的第8位共用相同的引脚(AD0~AD7)。在该方式下,要用一个外部锁存器(如 74HC373或相同功能的锁存器)保持RAM地址的低8位。外部锁存器由ALE(地址锁存使能)信号控制,ALE信号由外部存储器接口逻辑驱动。

9.在总线复用时,需要把地址数据复用端口配置为漏极开路。

10.ALE高/低脉宽占1个SYSCLK周期,地址建立/保持时间占0个SYSCLK周期,/WR和/RD占12个SYSCLK周期,EMIF工作在地址/数据复用方式,即:EMI0CF |= 0x2c;EMI0TC |= 0x2c;配置EMIF 的步骤是:先将EMIF选到低端口或高端口;然后选择复用方式或非复用方式;再选择存储器的模式(只用片内存储器、不带块选择的分片方式、带块选择的分片方式或只用片外存储器);然后设置EMI0TC;最后通过寄存器PnMDOUT和P74OUT选择所期望的相关端口的输出方式。如:

void PORT_Init (void)

{

XBR2 = 0x40; /*使能交叉开关和弱上拉*/

P74OUT |= 0xff; /*使能P4~P7推挽输出*/

EMI0CF |= 0x2c; /*EMIF工作在地址/数据复用方式,只用外部存储器,ALE高/低脉宽占1个SYSCLK周期*/

EMI0TC |= 0x6c; /*地址建立/保持时间占0个SYSCLK周期,/WR和/RD占12个SYSCLK周期*/

P3MDOUT |= 0xdf; /*使能P3.5推挽输出*/

}

11.避免高端口处于“浮空”状态,以避免因输入浮空为无效逻辑电平而导致不必要的功率消耗,为此应采取如下措施的任何一种:a.将XBR2.7位设置为逻辑0选择弱上拉状态

R/W R/W R/W R/W R/W R /W R/W R/W 复位值

WEAKPUD XBARE - T4EXE T4E UART1E EMIFLE CNVSTE 00000000

位7 位6 位5 位4 位

3 位2 位1 位

0 SFR地址

位7 WEAKPUD 弱上拉禁止位

0 弱上拉全局允许

1 弱上拉全局禁止

位6 XBARE 交叉开关允许位

0 交叉开关禁止端口0 1 2 和3 的所有引脚被强制为输入方式

1 交叉开关允许

位5 未用读0 写=忽略

位4 T4EXE T4EX 输入允许位

0 T4EX 不连到端口引脚

1 T4EX 连到端口引脚

位3 T4E T4 输入允许位

0 T4 不连到端口引脚

1 T4 连到端口引脚

位2 UART1E UART1 I/O 允许位

0 UART1 I/O 不连到端口引脚

1 UART1 TX 和RX 连到两个端口引脚

位1 EMIFLE 外部存储器接口低端口允许位

0 P0.7 P0.6 和P0.5 的功能由交叉开关或端口锁存器决定

1 如果EMI0CF.4 = 0 外部存储器接口为复用方式

则P0.7 (/WR) P0.6 (/RD)和P0.5 (/ALE)被交叉开关跳过它们的输出

状态由端口锁存器和外部存储器接口决定

1 如果EMI0CF.4 = 1 外部存储器接口为非复用方式

则P0.7 (/WR)和P0.6 (/RD)被交叉开关跳过它们的输出状态由端口锁

存器和外部存储器接口决定

位0 CNVSTE 外部转换启动输入允许位

0 CNVSTR 不连到端口引脚

1 CNVSTR 连到端口引脚;

b.令P74OUT=0xFF,将高端口输出方式配置为推拉方式(P74OUT为高端口输出方式寄存器);

c.向高端口数据寄存器P4、P5、P6和P7写0。

12.配置端口引脚的输出方式

每个端口引脚的输出方式都可被配置为漏极开路或推挽方式。在推挽方式下向端口数据

寄存器中的相应位写逻辑0 将使端口引脚被驱动到GND 写逻辑1 将使端口引脚被驱动到VDD ,在漏极开路方式下向端口数据寄存器中的相应位写逻辑0 将使端口引脚被驱动

到GND 写逻辑1 将使端口引脚处于高阻状态,当系统中不同器件的端口引脚有共享连接

即多个输出连接到同一个物理线时(例如SMBus 连接中的SDA 信号),使用漏极开路方式可

以防止不同器件之间的冲突。(推挽方式在有些书中称为推拉方式)

关于开漏、推挽方式,漏级开路即高阻状态,适用于输入/输出,其可独立输入/输出低电平和高阻状态,若需要产生高电平,则需使用外部上拉电阻或使用如LCX245等电平转换芯片。有些朋友,尤其是未学过此方面知识的朋友,在实际工作中将I/O口设置为漏开,并想输出高电平,但向口线上写1后对方并未认出高电平,但用万用表测量引脚确有电压,这种认为是不对的,对于高阻状态来说,测量电压是无意义的,正确的方法应是外加上拉电阻,上拉电阻的阻值=上拉电压/芯片引脚最大灌(拉)电流。

推挽方式可完全独立产生高低电平,推挽方式为低阻,这样,才能保证口线上不分走电压或分走极小的电压(可忽略),保证输出与电源相同的高电平,推挽适用于输出而不适用于输入,因为若对推挽(低阻)加高电平后,I=U/R,I会很大,将造成口的烧毁。

对与C8051F的很多型号片子,将I/O口设置为推挽方式的做法为:PnMDOUT=0xff,Pn=0x00,这样设置I/O口为推挽,并输出低电平(可降低功耗)将I/O口设置为漏开方式的做法为:PnMDOUT=0x00,Pn=0x11,这样设置I/O口为漏开。

如果学过三极管放大电路一定知道,前置单管放大器和功放末级放大电路的区别。单片机内部的逻辑经过内部的逻辑运算后需要输出到外面,外面的器件可能需要较大的电流才能推动,因此在单片机的输出端口必须有一个驱动电路。

这种驱动电路有两种形式:

其中的一种是采用一只N型三极管(npn或n沟道),以npn三极管为例,就是e接地,b接内部的逻辑运算,c引出,b受内部驱动可以控制三极管是否导通但如果三极管的c极一直悬空,尽管b极上发生高低变化,c极上也不会有高低变化,因此在这种条件下必须在外部提供一个电阻,电阻的一端接c(引出脚)另一端接电源,这样当三极管的b有高电压是三极管导通,c电压为低,当b为低电压时三极管不通,c极在电阻的拉动下为高电压,这种驱动电路有个特点:低电压是三极管驱动的,高电压是电阻驱动的(上下不对称),三极管导通时的ec内阻很小,因此可以提供很大的电流,可以直接驱动led甚至继电器,但电阻的驱动是有限的,最大高电平输出电流

=(vcc-Vh)/r;

另一种是互补推挽输出,采用2只晶体管,一只在上一只在下,上面的一只是n型,下面为p型(以三极管为例),两只管子的连接为:npn(上)的c连 vcc,pnp(下)的c接地,两只管子的ee,bb相连,其中ee作为输出(引出脚),bb接内部逻辑,这个电路通常用于功率放大点路的末级(音响),当bb接高电压时npn管导通输出高电压,由于三极管的ec电阻很小,因此输出的高电压有很强的驱动能力,当bb接低电压时npn截至,pnp导通,由于三极管的ec电阻很小因此输出的低电压有很强的驱动能力,简单的例子,9013导通时ec电阻不到10欧,以Vh=2.5v,vcc=5v 计算,高电平输出电流最大=250MA,短路电流500ma,这个计算同时告诉我们采用推挽输出时一定要小心千万不要出现外部电路短路的可能,否则肯定烧毁芯片,特别是外部驱动三极管时别忘了在三极管的基极加限流电阻。推挽输出电路的形式很多,有些单片机上下都采用n型管,但内部逻辑提供互补输出,以上的说明仅仅为了说明推挽的原理,为了更深的理解可以参考功率放大电路。

振荡器

问:内部时钟振荡器是否稳定?是否可以用于产生波特率的时基?

答:不同器件的内部时钟振荡器的精度是不同的(±20%)。随电源电压变化,它也将发生变化(6.5%/V)。但基本不随温度变化(<1%温度变化范围 -40℃~+85℃)。由于不同器件内部振荡器的离散性较大,所以不能用于产生波特率,应该外接标准晶体。而有些器件,如

C8051F3xx/f12x/f04x/f06x内部振荡器精度为±2%,可用于产生波特率。

问:片内/外振荡器如何配置?

答:正确步骤:

1、允许外部振荡器;

2、等待1ms;

3、查询XTLVLD '0'->'1'

4、切换到外部振荡器。

注意:振荡器频率的选择,即OSCXCN寄存器的配置(外部振荡器频率控制位的设置)。关于更多的信息以及源代码可以参看应用笔记AN002《配置内部和外部振荡器》。应用笔记可以从我公司网站下载:https://www.360docs.net/doc/c15334116.html,

问:C8051F MCU的指令执行速度为多少?

答:C8051F MCU的CIP-51内核采用流水线结构,与标准的8051结构相比,指令执行速度有很大的提高。标准的8051单片机执行一个单周期指令需要12个系统时钟周期,而C8051F MCU执行一个单周期指令只需要一个系统时钟周期。如果系统时钟频率为25MHz,执行一个单周期指令所需时间为40ns。

问:切换外部晶振时应注意哪些问题?

答:首先要允许外部振荡器,但此时的系统时钟源仍应是内部时钟,直到外部振荡器稳定后,才可将系统时钟源切换到外部振荡器上,否则会出现切换不过去,系统死机的情况。

问:使用外部晶振应注意哪些问题?

答:1、所有的模拟和数字电源引脚都应接电源(2.7~3.6V);

2、C8051F3xx系列器件的晶振引脚间应跨接一个10M电阻(在新华龙网站的“主页”—“原理图/PCB库”中有C8051F系列单片机的典型接线图);

3、晶振、电容等相关器件尽量靠近单片机的晶振引脚。

问:系统时钟切换到外部时钟后,内部的时钟是否应关闭?

答:可以选择关闭或不关闭,但是从降低功耗的角度来说,应该关闭。

问:系统时钟可不可以在程序中随时切换?

答:可以,但是由内部再一次切换到外部时应按照技术问答2所介绍的步骤进行切换。

问:使用外部晶振时如何配置芯片的引脚?

答答:对于芯片上有固定晶振引脚的设备(例如C8051F02X);相应时钟输入引脚按选择的晶振模式自动分配引脚;

对于晶振引脚与GPIO共用的芯片(例如C8051F30X);晶振引脚要按下述方式进行设置:

(1).外接晶体体时;XTAL1与XTAL2都要配置为模拟输入

(2).外接振荡电路为“RC”或“C”方式时,XTAL2引脚要配置为模拟输入

(3).外接CMOS时钟电路时,XTAL2引脚要配置为数字输入

(4).以上几种方式在引脚的配置中都要使用跳过功能将此引脚跳过

问:外接晶振的最高频率是多少?

答:外接晶振的最高频率是30MHz;

模数转换

问:从上电(或退出掉电模式)到ADC稳定开始转换需要多长时间?

答:模拟建立时间也就是等待参考电平稳定的时间。它取决于接在VREF引脚的电容容量。此电容越大VREF的噪音就越小,ADC转换结果的噪音也就越小。如果用4.7μF电容,则稳定时间大约为2ms,如果无旁路电容(不推荐),稳定时间大约为10μS。

注意:在开始转化之前,需要一个1.5μS的跟踪时间,这也就决定了ADC多路转换开关(MUX)的切换速度。

问:ADC的最大输入电压及输入阻抗?

答:ADC的最大输入电压为VREF,它的输入电压范围是0V-AV+/VDD。

输入电容为10pF;输入阻抗等价于一个5kΩ电阻和一个10pF电容的串联。

请参考应用笔记AN019“计算开关电容ADC的建立时间”。

问:ADC可编程窗口检测器有什么用途?

c8051f020 IO配置总结

c8051f020 I/O配置小结(输出方式:漏极开路;推挽方式) 2011-07-06 09:55 C8051f020 I/O配置小结 020的每个I/O口引脚都可以被配置为推挽或漏极开路输出。同时引入了数字交叉开关,允许将内部数字系统资源映射到P0、P1、P2和P3的端口引脚。通过设置交叉开关寄存器可将片内的计数器/定时器、串行总线、硬件中断、ADC转换启动输入、比较器输出以及微控制器内部的其他数字信号配置为出现在端口I/O引脚。必须在访问这些外设的I/O之前配置和允许交叉开关。 注意的问题: 1.低端口既能按位寻址,也可以按字节寻址;高端口只能按字节寻址。 2.没有被分配到的引脚作为一般的数字通用I/O口。 3.P1口还可以用作ADC1的模拟输入。 4.P0MDOUT~P3MDOUT用于控制I/O端口每一位的输出状态。 5.EMIF(外部存储器接口)是用于CPU与片外XRAM之间的数据传输通道,通过寄存器EMI0CF和EMI0CN选择和管理端口实现数据的传输。 6.为了能访问片外存储器空间,必须设置EMI0CN寄存器的内容为片外存储器的空间页地址。 7.如果把外部存储器接口(EMIF)设置在高端口则首先要把EMI0CF的PRTSEL位设置为1,选择高端口,同时选择地址的复用或非复用方式,在把XBR的外部寄存器的EMIFLE位设置为0。 8.复用方式配置:在复用方式下,数据总线和地址总线的第8位共用相同的引脚(AD0~AD7)。在该方式下,要用一个外部锁存器(如74HC373或相同功能的锁存器)保持RAM地址的低8位。外部锁存器由ALE(地址锁存使能)信号控制,ALE信号由外部存储器接口逻辑驱动。 9.在总线复用时,需要把地址数据复用端口配置为漏极开路。 10.ALE高/低脉宽占1个SYSCLK周期,地址建立/保持时间占0个SYSCLK周期,/WR和/RD 占12个SYSCLK周期,EMIF工作在地址/数据复用方式,即:EMI0CF |= 0x2c;EMI0TC |= 0x2c;配置EMIF的步骤是:先将EMIF选到低端口或高端口;然后选择复用方式或非复用方式;再选择存储器的模式(只用片内存储器、不带块选择的分片方式、带块选择的分片方式或只用片外存储器);然后设置EMI0TC;最后通过寄存器PnMDOUT和P74OUT选择所期望的相关端口的输出方式。如: void PORT_Init (void) { XBR2 = 0x40; /*使能交叉开关和弱上拉*/ P74OUT |= 0xff; /*使能P4~P7推挽输出*/ EMI0CF |= 0x2c; /*EMIF工作在地址/数据复用方式,只用外部存储器,ALE高/低脉宽占1个SYSCLK周期*/ EMI0TC |= 0x6c; /*地址建立/保持时间占0个SYSCLK周期,/WR和/RD占12个SYSCLK周期*/ P3MDOUT |= 0xdf; /*使能P3.5推挽输出*/ } 11.避免高端口处于“浮空”状态,以避免因输入浮空为无效逻辑电平而导致不必要的功率消耗,为此应采取如下措施的任何一种:a.将XBR2.7位设置为逻辑0选择弱上拉状态 R/W R/W R/W R/W R/W R/W R/W R/W 复位值 WEAKPUD XBARE - T4EXE T4E UART1E EMIFLE CNVSTE

c8051f020端口配置说明

C8051F的每个I/O口引脚都可以被配置为推挽或漏极开路输出。同时引入了数字交叉开关,允许将内部数字系统资源映射到P0、P1、P2和P3 的端口引脚。通过设置交叉开关寄存器可将片内的计数器/定时器、串行总线、硬件中断、ADC转换启动输入、比较器输出以及微控制器内部的其他数字信号配置为出现在端口I/O引脚。必须在访问这些外设的I/O之前配置和允许交叉开关。 注意的问题: 1.低端口既能按位寻址,也可以按字节寻址;高端口只能按字节寻址。 2.没有被分配到的引脚作为一般的数字通用I/O口。 口还可以用作ADC1的模拟输入。 ~P3MDOUT用于控制I/O端口每一位的输出状态。 (外部存储器接口)是用于CPU与片外XRAM之间的数据传输通道,通过寄存器EMI0CF和EMI0CN 选择和管理端口实现数据的传输。 6.为了能访问片外存储器空间,必须设置EMI0CN寄存器的内容为片外存储器的空间页地址。 7.如果把外部存储器接口(EMIF)设置在高端口则首先要把EMI0CF的PRTSEL位设置为1,选择高端口,同时选择地址的复用或非复用方式,在把XBR的外部寄存器的EMIFLE位设置为0。 8.复用方式配置:在复用方式下,数据总线和地址总线的第8位共用相同的引脚(AD0~AD7)。在该方式下,要用一个外部锁存器(如74HC373或相同功能的锁存器)保持RAM地址的低8位。外部锁存器由ALE(地址锁存使能)信号控制,ALE信号由外部存储器接口逻辑驱动。 9.在总线复用时,需要把地址数据复用端口配置为漏极开路。 高/低脉宽占1个SYSCLK周期,地址建立/保持时间占0个SYSCLK周期,/WR和/RD占12个SYSCLK 周期,EMIF工作在地址/数据复用方式,即:EMI0CF |= 0x2c;EMI0TC |= 0x2c;配置EMIF的步骤是:先将EMIF选到低端口或高端口;然后选择复用方式或非复用方式;再选择存储器的模式(只用片内存储器、不带块选择的分片方式、带块选择的分片方式或只用片外存储器);然后设置EMI0TC;最后通过寄存器PnMDOUT和P74OUT选择所期望的相关端口的输出方式。如: void PORT_Init (void) { XBR2 = 0x40; /*使能交叉开关和弱上拉*/ P74OUT |= 0xff; /*使能P4~P7推挽输出*/

C8051F020单片机初始化程序和编译步骤

C8051F020单片机初始化程序和编译步骤 2011-02-15 12:20:06| 分类:默认分类 | 标签: |字号大中小订阅 C8051F020编程步骤 一、编程步骤: 1、看门狗设置 2、系统初始化 3、端口初始化 4、对应功能初始化(如:串口,定时器,I2C,SPI,PCA, DAC/ADC,中断等等) 5、功能函数或中断函数(如需要)6、包含的头 文件 7、项目说明 二、对应功能初始化要点: 1、Uart:(1)串口工作模式由SCON设定(2)定时器工作方式设定TMOD (3)波特率TH载入值设定 (4)启动TR1 (5)时钟基准 CKCON (6)波特率加倍设定 PCON(7)开中断使 能TI 2、Time:(1)工作方式设定TMOD (2)定时器时钟基准CKCON (3)启动/停止TCON设定TRn 3、Interrupt:(1)中断允许IE (2)触发方式设定(上下沿,电平)(3)对应控制位允许设定,如ES串口 允许 C8051F020单片机初始化程序 ; $INCLUDE (C8051F020.inc) https://www.360docs.net/doc/c15334116.html,/ C8051F020单片机功能强大,初始化也比较繁杂,为了便于初始化各功能模块,我们编了此程序 可看着“说明”初始化。 ORG SYS_INIT ;※▲◆●◎★☆△ ;◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆ ;■-- <1> --电源管理 ; PCON ; POWER CONTROL ;■-- <2> --系统时钟和振荡器 ; OSCXCN ; EXTERNAL OSCILLATOR CONTROL ; OSCICN ; INTERNAL OSCILLATOR CONTROL ;■-- <3> --复位及看门狗管理 ; RSTSRC ; RESET SOURCE ; WDTCN ; WATCHDOG TIMER CONTROL ;■-- <4> --FLASH存储器编程和安全管理 ; FLSCL ; FLASH MEMORY TIMING PRESCALER ; PSCTL ; PROGRAM STORE R/W CONTROL ; FLACL ; FLASH ACESS LIMIT ;■-- <5> --中断控制 ; IE ; INTERRUPT ENABLE ; EIE1 ; EXTERNAL INTERRUPT ENABLE 1

C8051F020实验指导书

单片机实验指导书 目录 第一章:实验设备简介 (1) 1.1 系统实验设备的组成 (1) 1.2 Silicon Labs C8051F 单片机开发工具简介 (1) 1.3 DICE-C8051F嵌入式实验/开发系统简介 (3) 第二章集成开发环境KEIL C软件使用指南 (7) 2.1 KEIL C软件具体使用说明 (7) 第三章实验指导 (19) 3.1 C8051F 单片机I/O 口交叉开关设置 (19) 3.2 数字I/O端口实验 (21) 3.3 定时器实验 (23) 3.4 外部中断实验 (25) 3.5 键盘显示实验 (27) 3.6 六位动态LED数码管显示实验 (29) 3.7 RS3232串口通讯实验 (31) 3.8 综合设计 (33)

使用特别说明: (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仿真器和系统实验板三部分组成,应用该设备可进行片上系统单片机较典型应用的实验,请参见以下介绍。 1.2 Silicon Labs C8051F 单片机开发工具简介 1.2.1 开发工具概述 Silicon Labs 的开发工具实质上就是计算机IDE 调试环境软件及计算机USB 到C8051F 单片机JTAG 口的协议转换器(DICE-EC5)的组合。Silicon Labs C8051F 系列所有的单片机片内均设计有调试电路,该调试电路通过边界扫描方式获取单片机片内信息,通过4 线的JTAG接口与开发工具连接以便于进行对单片机在片编程调试。DICE-C8051F嵌入式实验/开发系统中的C8051F020 CPU 板上的单片机为C8051F 系列中的F020。 仿真器(DICE-EC5)一端与计算机相连,另一端与C8051F 单片机JTAG 口相连,应用Keil 的uVision2 调试环境就可以进行非侵入式、全速的在系统

C8051F020与80C51单片机的异同点

C8051F020与80C51单片机的异同点 1 引言 80C51系列单片机及其衍生产品在我国乃至全世界范围获得了非常广泛的应用。单片机领域的大部分工作人员都熟悉80C51单片机,各大专院校都采用80C51系列单片机作为教学模型。随着单片机的不断发展,市场上出现了很多高速、高性能的新型单片机,基于标准8051内核的单片机正面临着退出市场的境地。为此,一些半导体公司开始对传统8051内核进行大的构造,主要就是提高速度与增加片内模拟与数字外设,以期大幅度提高单片机的整体性能。其中美国Cygnal公司推出的C8051F系列单片机把80C51系列单片机从MCU时代推向SoC时代,使得以8051为内核的单片机上了一个新的台阶。 C8051F系列单片机就是完全集成的混合信号系统级芯片,具有与8051兼容的CIP-51微控制器内核,采用流水线结构,单周期指令运行速度就是8051的12倍,全指令集运行速度就是原来的9、5倍。熟悉NCS-51系列单片机的工程技术人员可以很容易地掌握C8051F的应用技术并能进行软件的移植。但就是不能将8051的程序完全照搬的应用于C8051F单片机中,这就是因为两者的内部资源存在较大的差异,必须经过加工才能予以使用。其中C8051F020以其功能较全面,应用较广泛的特点成为C8051F的代表性产品,其性能价格比在目前应用领域也极具竞争力。C8051F020的内部电路包括CIP-51微控制器内核及RAM、ROM、I/O口、定时/计数器、ADC、DAC、PCA、SPI与SMBus等部件,即把计算机的基本组成单元以及模拟与数字外设集成在一个芯片上,构成一个完整的片上系统(SoC)。本文将介绍C8051F020单片机与80C51的异同点(主要就是不同之处)及初学者编程时应该注意的问题,并给出经过Cygnal开发工具IDE调试环境软件验证的源程序。 2 相同点 C8051F020单片机与80C51系列单片机的指令系统完全一样。掌握80C51单片机的人员可以很容易地接受C8051F020的应用技术并能完成相应软件的移植。 3 主要硬件不同点 3、1 运行速度 C8051F020的指令运行速度就是一般80C51系列单片机的10倍以上。因为其CIP-51中采用了流水线处理结构,已经没有了机器周期时序,指令执行的最小时序单位为系统时钟,大部分指令只要1~2个系统周期即可完成。又由于其时钟系统比80C51的更加完善,有多个时钟源,且时钟源可编程,时钟频率范围为0~25 MHz,当CIP-5l工作在最大系统时钟频率25 MHz时,它的峰值速度可以达到25 MI/s,C8051F020已进入了8位高速单片机行列。 3、2 I/O端口的配置方式 C8051F020拥有8个8位的I/O端口,大量减少了外部连线与器件扩展,有利于提高可靠性与抗干扰能力。其中低4个I/O端口除可作为一般的通用I/O端口外,还可作为其她功能模块的输入或输出引脚,它就是通过交叉开关配置寄存器XBR0、XBR1、XBR2(各位名称及格式如表1所示)选择并控制的,它们控制优先权译码选择开关电路如图1所示,可将片内的计数器/定时器、串行总线、硬件中断、比较器输出及其它的数字信号配置为在端口I/O引脚出现,这样用户可以根据自己的特定需要选择所需的数字资源与通用I/O口。数字交叉开关就是一个比较大的数字开关网路,这在所有80C51系列单片机上就是一个空白。另外P1MDIN用于选择P1的输入方式就是模拟输入还就是数字输入,复位值为11111111B,即默认为数字输入方式。而80C51单片机的I/O引脚就是固定分配的,即占用引脚多,配置又不够灵活。

C8051F单片机常见问题及解决方案

振荡器 问:内部时钟振荡器是否稳定?是否可以用于产生波特率的时基? 答:不同器件的内部时钟振荡器的精度是不同的(±20%)。随电源电压变化,它也将发生变化(6.5%/V)。但基本不随温度变化(<1%温度变化范围-40℃~+85℃)。由于不同器件内部振荡器的离散性较大,所以不能用于产生波特率,应该外接标准晶体。而有些器件,如C8051F3xx/f12x/f04x/f06x内部振荡器精度为±2%,可用于产生波特率。 问:片内/外振荡器如何配置? 答:正确步骤: 1、允许外部振荡器; 2、等待1ms; 3、查询XTLVLD '0'->'1' 4、切换到外部振荡器。 注意:振荡器频率的选择,即OSCXCN寄存器的配置(外部振荡器频率控制位的设置)。关于更多的信息以及源代码可以参看应用笔记AN002《配置内部和外部振荡器》。应用笔记可以从我公司网站下载:https://www.360docs.net/doc/c15334116.html, 问:C8051F MCU的指令执行速度为多少? 答:C8051F MCU的CIP-51内核采用流水线结构,与标准的8051结构相比,指令执行速度有很大的提高。标准的8051单片机执行一个单周期指令需要12个系统时钟周期,而C8051F MCU 执行一个单周期指令只需要一个系统时钟周期。如果系统时钟频率为25MHz,执行一个单周期指令所需时间为40ns。 问:切换外部晶振时应注意哪些问题? 答:首先要允许外部振荡器,但此时的系统时钟源仍应是内部时钟,直到外部振荡器稳定后,才可将系统时钟源切换到外部振荡器上,否则会出现切换不过去,系统死机的情况。 问:使用外部晶振应注意哪些问题? 答:1、所有的模拟和数字电源引脚都应接电源(2.7~3.6V); 2、C8051F3xx系列器件的晶振引脚间应跨接一个10M电阻(在新华龙网站的“主页”—“原理图/PCB库”中有C8051F系列单片机的典型接线图); 3、晶振、电容等相关器件尽量靠近单片机的晶振引脚。 问:系统时钟切换到外部时钟后,内部的时钟是否应关闭? 答:可以选择关闭或不关闭,但是从降低功耗的角度来说,应该关闭。 问:系统时钟可不可以在程序中随时切换? 答:可以,但是由内部再一次切换到外部时应按照技术问答2所介绍的步骤进行切换。 问:使用外部晶振时如何配置芯片的引脚? 答答:对于芯片上有固定晶振引脚的设备(例如C8051F02X);相应时钟输入引脚按选择的晶振模式自动分配引脚; 对于晶振引脚与GPIO共用的芯片(例如C8051F30X);晶振引脚要按下述方式进行设置: (1).外接晶体体时;XTAL1与XTAL2都要配置为模拟输入 (2).外接振荡电路为“RC”或“C”方式时,XTAL2引脚要配置为模拟输入

C8051F020单片机完成16路信号源的输出

系统集成与应用 实验报告 2013/2014 学年第2 学期 学生姓名:*杰学号:*学院: 仪器与电子学院 专业: 电子科学与技术 题目: 用C8051F020单片机完成16路信号源的输 出 指导教师:焦新泉 2014 年 5 月 15日

一、设计任务与要求 用C8051F020单片机完成16路信号源的输出,并通过单片机内部A/D转换器进行输出信号源的反馈采样,最后通过异步串行接口(UART)将采样结果输出。利用C8051单片机将波形量化数据放置于内部ROM,通过内部D/A产生信号以及I/O端口控制多路模拟开关,同时生成16路信号源,注意信号源调理电路中采保部分的选值,并给出理论计算结果。反馈回采部分采用单片机的12位高精度A/D转换器,采样频率自定(要求给出理论计算值),并通过UART接口将采样值送出,按9600bps的波特率发出(接收对象可以是计算机或其它)。 二、系统方案论证 本系统有DA输出部分、AD反馈部分、串口输出部分组成,系统框图下: 单片机多路模 拟开关 采样保 持部分 滤波电 路 放大部 分 输出 16路信 号输入 16选1开 关 跟随输 入 URAT输 出电脑上位机 AD DA 图1.系统流程图 1.单片机部分 单片机选用C8051F020,是完全集成的混合信号系统级MCU芯片,具有64个数字I/O引脚;具有12位100kps的8通道ADC,带PGA和多路模拟开关;具有2个12位DAC,具有可编程数据更新方式;64K可在系统编程的FLASH存储器;4352字节的片内RAM;可寻址64K字节地址空间的数据存储器接口:2个UART 串行接口。基于以上优良特性,故选用该单片机。 单片机具有上电复位、掉电复位、外部复位、软件强制复位等多种复位方式。在应用中外部复位方式得到广泛应用。外部/RST引脚提供使用外部电路使单片机强制复位的手段。在外部/RST引脚加一个低电平有效信号,将使单片机复位,最好提供一个外部上拉,或对RST引脚去耦以防止噪声引起复位。

C8051F020实验

目 录 说明 (3) MT020学习开发板/MT-UDA仿真器说明 (4) 一 C8051F020/120单片机学习开发板(MT020)简介 (5) 1.1 MT020单片机学习开发板特色 (5) 1.2 MT020与国内同类产品比较 (5) 1.3 MT020与同类产品实物图比较 (7) 二 电路原理图 (8) 2.1 MT020电路原理图 (8) 2.2 MT020学习开发板TopLayer图 (13) 三 快速运行第一个程序 (15) 3.1 Keil C51 的安装 (15) 3.1.1 系统要求 (15) 3.1.2 软件的安装 (15) 3.2 MT-UDA调试仿真器驱动程序的安装 (17) 3.3 μVision2 集成开发环境 (18) 3.3.1 μVision2 集成工具 (18) 3.3.2 菜单栏命令、工具栏和快捷方式 (18) 3.4 Keil C51使用及与仿真器连调 (23) 3.4.1 创建第一个Keil C51 应用程序 (23) 3.4.2 程序文件的编译、链接 (29) 3.4.3 程序调试 (32) 四 MT020学习开发板基础实验 (37) 4.1 I/O口控制实验(蜂鸣器驱动实验) (37) 4.2 精确延时程序实现 (38) 4.3 数码管显示实验 (39) 4.4 键盘扫描实验 (40) 4.5 中断按键实验 (41) 4.6 软件模拟I2C总线实验(EEPROM AT24C01) (42) 4.7 利用SMBUS实现基于I2C器件操作实验(读写EEPROM AT24C01) (43) 4.8 字符型液晶1602显示实验 (44) 4.9 图型液晶12864显示实验 (45) 4.10 串口通信实验 (46) 4.11 数字温度传感器DS18B20实验 (47) 4.12 ADC0片上温度采集实验 (48) 4.13 ADC0电压采集实验 (49) 4.14 DAC0输出正弦实验 (50) 4.15 DAC0输出DTMF信号实验 (51) 4.16 比较器(CP)实验 (52) 4.17 硬件SPI接口控制跑马灯实验 (53) 4.18 用PCA硬件单元实现PWM实验 (54)

c8051f020中文资料

关于C8051F020系统概述 C8051F020 器件是完全集成的混合信号系统级 MCU 芯片,具有 64 个数字I/O 引脚(C8051F020)。下面列出了一些主要特性;有关某一产品的具体特性参见表 1.1; 1. 高速、流水线结构的 8051 兼容的 CIP-51 内核(可达 25MIPS) 2. 全速、非侵入式的在系统调试接口(片内) 3. 真正 12 位(C8051F020)、 100 ksps 的8 通道 ADC,带 PGA和模拟多路开关 4. 真正 8 位 500 ksps的 ADC,带 PGA和 8 通道模拟多路开关 5. 两个 12 位 DAC,具有可编程数据更新方式 6. 64K字节可在系统编程的 FLASH存储器 7. 4352(4096+256)字节的片内 RAM 8. 可寻址 64K字节地址空间的外部数据存储器接口 9. 硬件实现的 SPI、SMBus/ I2C 和两个 UART 串行接口 10. 5 个通用的 16 位定时器 11. 具有 5 个捕捉/比较模块的可编程计数器/定时器阵列 12. 片内看门狗定时器、VDD监视器和温度传感器 具有片内 VDD 监视器、看门狗定时器和时钟振荡器的 C8051F020是真正能独立工作的片上系统。所有模拟和数字外设均可由用户固件使能/禁止和配置。FLASH 存储器还具有在系统重新编程能力,可用于非易失性数据存储,并允许现场更新 8051 固件。 片内 JTAG调试电路允许使用安装在最终应用系统上的产品 MCU进行非侵入式(不占用片内资源)、全速、在系统调试。该调试系统支持观察和修改存储器和寄存器,支持断点、观察点、单步及运行和停机命令。在使用 JTAG调试时,所有的模拟和数字外设都可全功能运行。 每个 MCU都可在工业温度范围(-45℃到+85℃)内用 2.7V-3.6V的电压工作。端口 I/O、/RST 和 JTAG 引脚都容许 5V 的输入信号电压。C8051F020 为100 脚 TQFP 封装见图 1.1)。

C8051F020端口配置

C8051F020的端口配置 C8051F系列单片机有4~8个输入输出端口,每个端口有8个引脚,这些端口有如下特点: 1、这些引脚都可以用作通用I/O端口 2、它的P0~P3口的每个管脚都通过独立编程还能作为特殊功能的输入或输出,即同一个引脚可以作为片上不同外围功能模块的信号输入输出端口。 3、端口可以通过软件设置改变引脚的输入输出状态配置。如:弱上拉输入、推拉输出、开漏输出等。 根据端口特点,端口配置过程分为以下几步: 1、配置交叉开关(功能选择开关) 交叉开关寄存器共有四个分别是XBAR0、XBAR1、XBAR2、XBAR3。通过对这四个寄存器进行配置,使IO引脚同单片机的数字和模拟片上外围设备进行连接。 2、配置外部存储器接口 外部存储器接口(External Memory Interface,EMIF)用于CPU与片上和片外XRAM之间的数据传输通道,通过寄存器EMIOCF和EMIOCN选择和管理端口P0~P3或端口P4~P7实现数据传播。 配置这两个寄存器用以选择端口是否为复用方式(数据与地址线复用)、寄存器工作模式选择及外部存储器页选择。 3、配置IO端口的输入输出模式 输入模式分为模拟量输入和数字量输入。用寄存器PnMDIN配置n=0、1、2、3。 输出模式分为推拉(推挽)式和漏极开路式。用寄存器PnMDOUT配置 4、禁止模拟输入引脚的输出驱动 配置模拟输入时P口并没有把输出驱动电路完全关闭,所以不管是哪种输入,推荐的做法是:将相应的输入口的输出模式配置成开漏,并将其输出寄存器置“1”,使其为高阻态,以减少串扰。 5、启动交叉开关 单片机刚上电时,因为XBAR2的复位值为0,因而端口P0~P3的输出驱动器被禁止,在XBARE(XBAR2.6)位被设置为逻辑“1”之前,可防止对交叉开关(功能选择)寄存器和其他寄存器写入时,在端口引脚上产生争用。 正确配置交叉开关后,通过将XBARE设置为逻辑“1”,使功能选择开关有效。 至此配置完成 C8051f020 I/O配置小结 020的每个I/O口引脚都可以被配置为推挽或漏极开路输出。同时引入了数字交叉开关,允许将内部数字系统资源映射到P0、P1、P2和P3的端口引脚。通过设置交叉开关寄存器可将片内的计数器/定时器、串行总线、硬件中断、ADC转换启动输入、比较器输出以及微控制器内部的其他数字信号配置为出现在端口I/O引脚。必须在访问这些外设的I/O之前配置和允许交叉开关。 注意的问题: 1.低端口既能按位寻址,也可以按字节寻址;高端口只能按字节寻址。 2.没有被分配到的引脚作为一般的数字通用I/O口。 3.P1口还可以用作ADC1的模拟输入。 4.P0MDOUT~P3MDOUT用于控制I/O端口每一位的输出状态。

C8051F020单片机说明

C8051F020开发板 说明书 V1.0.0 2012年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-12864 AD/DA接口:本板的AD/DA接口都来自020内置的AD/DA 另外的外扩资源和接口如下图所示:

C8051F02X外部存储器接口和IO端口配置

https://www.360docs.net/doc/c15334116.html,/news/html/70/show1598.htm 摘要:介绍美国Cygnal公司生产的C8051F02X系列单片机的外部存储器接口、I/O 端口配置方法和有关注意的问题;在此基础上列举两个关于EMIF、I/O的配置应用。 关键词:C8051F02X EMIF I/O 交叉开关 美国Cygnal公司C8051F02X系列单片机是集成在一起芯片上的混合信号系统级单片机。该单片机具有32/64位数字I/O端口(引脚)、25MIPS高速流水线式8051微控制器内核、64KB在系统可编程Flash存储器、64KB地址的外部存储器接口、4352(4096+256)B片内RAM、各自独立的SPI、SMBUS/I2C和两个UART串行接口等特点。其最突出的优点就是,通过设置交叉开关寄存器控制片内数字资源映射到外部I/O引脚,这就允许用户根据自己的特定应用,选择通用I/O端口和所需要数字资源。当然,在设置数字交叉开关寄存器时,应该首先考虑EMIF的配置问题。其配置不同,将导致单片机通过不同的端口(低或高)访问片外存储器和存储器映像的I/O部件,以及数字交叉开关是否分配外部设备给P0.7(WR)、P0.6(RD)、P0.5(ALE)引脚。(如图EMIF设置为多路器模式。) 1 EMIF和I/O配置方法 1.1 外部存储器接口(EMIF)配置 C8051F02X系列MCU有4KB的RAM可以只映射在片内,也可以映射在64KB外部数据存储器地址空间,还可以同时映射到片内和片外(4KB地址以内在片内存储器空间访问,4KB以上经过EMIF访问)三种方式。对于后两种存储器工作模式,需通过外部存储器接口使用MOVX和DPTR或MOVX和R0(R1)指令访问外部数据存储器和存储器映像的I/O设备。但是对于高8位地址,必须由外部存储器接口寄存器(EMI0CN)提供;而EMIF可将外部数据存储器接口映射到低端口(P0~P3)(F020/2/3系列)或高端口(P4~P7)(F020/2系列),以及配置为复用模式或非复用模式等。配置外部存储器接口的步骤下: *设置EMIF为低端口或高端口; *设置EMIF为复用模式或非复用模式;

自己写的C8051F020程序

#include "c8051f020.h" #include "delay.h" #include "config.h" #include "ADC1DAC0.h" #include "ctypedef.h" #include "lcd_chinese.h" #include "7279.h" #include "ADC0.h" #include #include unsigned char KeyCode; bit Key_flag; /**********************键盘中断***********************************/ void keyint_fun(void) interrupt 19 { P3IF &= 0x3f; KeyCode = read_display(); Key_flag = 1; } void main(void) { unsigned int temp = 0; WDTCN = 0xde; //关看门狗 WDTCN = 0xad; //在上一个写入后四个系统周期内写入有效SYSCLK_Init(); //初始化系统时钟 PORT_Init(); //初始化IO口 lcd_Init(); DAC0_Init(); ADC0_Init(); ADC1_Init(); AMX1SL = 0x00; P1MDIN = 0xfe; while(1) { temp = ADC1_read(); temp<<=4; // display_int(temp,0,0); // Delay1us(10); DAC0(temp); } }

C8051F020例程

/***************************************************************************** 本测试程序用来测试板上所以I/O连接状况外接LED共阳数码管实验时将跳线帽接至+3V *****************************************************************************/ #include #define uchar unsigned char #define uint unsigned int uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; void PORT_Init (void) { XBR2 = 0x40; /*使能交叉开关*/ P0MDOUT =0xff; P1MDOUT =0xff; P2MDOUT =0xff; P3MDOUT =0xff; P74OUT =0xff; } /*******************************/ void delay(uint z) { uint x,y; for(x=0;x

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。这确实让我感到欣喜与震惊。欣喜的是找到了问题,震惊的是以前用过的ADC参考电压和

单片机C8051F020的初始化设置

单片机C8051F020的初始化设置 在喧闹的世界中,能静下心来研究技术也是很有趣的事情。好多年没作些具体的技术工作了,幸好领导给分配一个单片机任务。现在把研究的技术写下来,与朋友们分享。 研究C8051F020编程不能离开初始化设置。对于简单程序,读技术手册,将用到的I/O口,中断,串口,晶振等正确初试化后,已经成功一半了。 晶振需要初始化,C8051F020有内部晶振,精度不高,一般电路都使用外部晶振。初始化晶振主要是OSCXCN和OSCICN两个寄存器的设置。具体初始化代码可由Silicon的配置程序自动生成: void Oscillator_Init() { int i = 0; OSCXCN = 0x67; for (i = 0; i < 3000; i++); while ((OSCXCN & 0x80) == 0); OSCICN = 0x08; } 上面程序包括了晶振初始化的全部过程: 1、使能外部振荡器: OSCXCN = 0x67; 2、等待至少1m钟,等待外部振荡器起稳: for (i = 0; i < 3000; i++); 3、查询OSCXCN的第八位XTLVLD是否为1,1表明外部振荡器起稳: while ((OSCXCN & 0x80) == 0); 4、关内部晶振,切换到外部晶振 OSCICN = 0x08; 而同事们的设置是OSCICN= 0x88;应该是使用外部振荡器,但是内部振荡器也没关,这样MCU耗能高些。 串口0(UART0)也需要配置: void UART0_Init (void) { SCON0 = 0x50; // SCON0: 模式1,可接收,8位串口 TMOD = 0x20; // TMOD: 定时器1, 模式2, 8位自动重载 TH1 = -(SYSCLK/BAUDRATE/16); // 设置定时器1 TR1 = 1; // 开始定时 CKCON |= 0x10; // 定时器用SYSCLK作基准时间 PCON |= 0x80; // 禁止UART0波特率/2 } SCON0是UART0控制寄存器,用来选择传输模式。第7位SM00和第6位SM10用来配置UART0的工作坊式,SCON0=0x50即选择模式1,8位UART可变波特率异步传输。 PCON是电源控制寄存器:PCON的第7位SMOD0,0表示使能UART0的波特率

C8051F020单片机

Cygnal出的一种混合信号系统级单片机。片内含CIP-51的CPU内核,它的指令系统与MCS-51完全兼容。其中的C8051F020单片机含有64kB片内Flash程序存储器,4352B的RAM、8个I/O端口共64根I/O口线、一个12位A/D转换器和一个8位A/D转换器以及一个双12位D/A转换器、2个比较器、5个16位通用定时器、5个捕捉/比较模块的可编程计数/定时器阵列、看门狗定时器、VDD监视器和温度传感器等部分。C8051F020单片机支持双时钟,其工作电压范围为2.7~3.6V(端口I/O,RST和JTAG引脚的耐压为5V)。与以前的51系列单片机相比,C8051F020增添了许多功能,同时其可靠性和速度也有了很大提高。 C8051Fxxx 系列单片机是完全集成的混合信号系统级芯片,具有与8051 兼容的微控制器 内核,与MCS-51 指令集完全兼容。除了具有标准8052 的数字外设部件之外,片内还集成了 数据采集和控制系统中常用的模拟部件和其它数字外设及功能部件。参见表1.1 的产品选择 指南可快速查看每个MCU 的特性。 表1.1 C8051Fxxx 产品选择指南 MIPS(峰值) FLASH 存储器(字节) RAM(字节) 外部存储器接口 SMBus/12C SPI UART 定时器(16 位) 可编程计数器阵列 内部振荡器精度(±%) 数字端口I/O ADC 分辨率(位) ADC 最大速度(ksps) ADC 输入 电压基准 温度传感器 DAC 分辨率(位) DAC 输出(位) 电压比较器 备注:C8051F02X 系列单片机片内还集成有一个8 位,500ksps,8 输入(与P1 口复用)ADC。 — 2 — MCU 中的外设或功能部件包括模拟多路选择器、可编程增益放大器、ADC、DAC、电

C8051F020 AD程序

单片机为C8051F020,AD采用单片机内部集成12位AD (ADC0)100ksps 实际测量结果与直流电源输出电压相差几个mV #include "C8051F020.h" //包含C8051F020硬件信息的头文件 #define VREF0 2.450 //内部基准电压为2.4V (2.450)为误差修正可修改float dout; float voltage; void delay_ms(unsigned int n); void ADC0_read(); void ADC0_Init(); //--------------------------------------------------- void main() { WDTCN = 0xde; WDTCN = 0xad; Init_Device(); ADC0_Init(); while(1) { ADC0_read(); delay_ms(50); } } //---------------------------------------------------- void delay_ms(unsigned int n) { unsigned i,j; for(i=n;i>0;i--) for(j=100;j>0;j--); } //----------------------------------------------------- void ADC0_Init(void) //初始化函数 { REF0CN = 0x03; //内部电压基准提供从VREF脚输出,ADC0电压基准取自VREF0 ADC0CN = 0xc0; //ADC0使能 ADC使能,由ADSTM1-0定义跟踪方式AMX0CF = 0x01; //输入口为AINT0 双端 0x00为单端输入输入口为AINT0与 AMX0SL = 0x00; AINT1 ADC0CF = 0x50; //转换周期和增益为1 //-----------------------------------------------------

相关文档
最新文档