C8051F020单片机初始化程序和编译步骤
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)开中断使能TI2、Time:(1)工作方式设定TMOD (2)定时器时钟基准CKCON (3)启动/停止TCON设定TRn3、Interrupt:(1)中断允许IE (2)触发方式设定(上下沿,电平)(3)对应控制位允许设定,如ES串口允许C8051F020单片机初始化程序; $INCLUDE (C8051F020.inc) /C8051F020单片机功能强大,初始化也比较繁杂,为了便于初始化各功能模块,我们编了此程序可看着“说明”初始化。
ORG SYS_INIT;※▲◆●◎★☆△;◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆;■-- <1> --电源管理; PCON ; POWER CONTROL;■-- <2> --系统时钟和振荡器; OSCXCN ; EXTERNAL OSCILLA TOR CONTROL; OSCICN ; INTERNAL OSCILLA TOR CONTROL;■-- <3> --复位及看门狗管理; RSTSRC ; RESET SOURCE; WDTCN ; W A TCHDOG 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; EIE2 ; EXTERNAL INTERRUPT ENABLE 2; IP ; INTERRUPT PRIORITY; EIP1 ; EXTERNAL INTERRUPT PRIORITY REGISTER 1; EIP2 ; EXTERNAL INTERRUPT PRIORITY REGISTER 2; P3IF ; PORT 3 EXTERNAL INTERRUPT FLAGS;■-- <6> --端口IO初始化及交叉开关设置; XBR0 ; DIGITAL CROSSBAR CONFIGURA TION REGISTER 0; XBR1 ; DIGITAL CROSSBAR CONFIGURA TION REGISTER 1; XBR2 ; DIGITAL CROSSBAR CONFIGURA TION REGISTER 2; P0MDOUT ; PORT 0 OUTPUT MODE CONFIGURA TION; P1MDOUT ; PORT 1 OUTPUT MODE CONFIGURA TION; P2MDOUT ; PORT 2 OUTPUT MODE CONFIGURA TION; P3MDOUT ; PORT 3 OUTPUT MODE CONFIGURA TION; P74OUT ; PORTS 4 - 7 OUTPUT MODE;■-- <7> --外部RAM和片内XRAM; EMI0CN ; EXTERNAL MEMORY INTERFACE CONTROL; EMI0CF ; EXTERNAL MEMORY INTERFACE (EMIF) CONFIGURA TION ; EMI0TC ; EXTERNAL MEMORY;■-- <8> --定时器设置; TMOD ; TIMER MODE; TCON ; TIMER CONTROL; T2CON ; TIMER 2 CONTROL; T4CON ; TIMER 4 CONTROL; TMR3CN ; TIMER 3 CONTROL; TMR3RLL ; TIMER 3 RELOAD REGISTER - LOW BYTE; TMR3RLH ; TIMER 3 RELOAD REGISTER - HIGH BYTE; TMR3L ; TIMER 3 - LOW BYTE; TMR3H ; TIMER 3 - HIGH BYTE;■-- <9> --串行通讯; SCON0 ; SERIAL PORT 0 CONTROL; SCON1 ; SERIAL PORT 1 CONTROL; SBUF1 ; SERAIL PORT 1 DA TA; SADDR1 ; SERAIL PORT 1; PCON ; POWER CONTROL; RCAP2L ; TIMER 2 CAPTURE REGISTER - LOW BYTE; RCAP2H ; TIMER 2 CAPTURE REGISTER - HIGH BYTE; RCAP4L ; TIMER 4 CAPTURE REGISTER - LOW BYTE; RCAP4H ; TIMER 4 CAPTURE REGISTER - HIGH BYTE; SADDR0 ; SERIAL PORT 0 SLA VE ADDRESS;■-- <10> --可编程计数器阵列; PCA0CN ; PCA 0 COUNTER CONTROL; PCA0MD ; PCA 0 COUNTER MODE; PCA0CPM0 ; CONTROL REGISTER FOR PCA 0 MODULE 0; PCA0CPM1 ; CONTROL REGISTER FOR PCA 0 MODULE 1; PCA0CPM2 ; CONTROL REGISTER FOR PCA 0 MODULE 2; PCA0CPM3 ; CONTROL REGISTER FOR PCA 0 MODULE 3; PCA0CPM4 ; CONTROL REGISTER FOR PCA 0 MODULE 4;■-- <11> --SMBus通讯; SMB0CN ; SMBUS 0 CONTROL; SMB0CR ; SMBUS 0 CLOCK RA TE; SMB0STA; SMBUS 0 STA TUS; SMB0DA T ; SMBUS 0 DA TA; SMB0ADR ; SMBUS 0 SLA VE ADDRESS;■-- <12> --SPI总线通讯; SPI0CKR ; SERIAL PERIPHERAL INTERFACE 0 CLOCK RA TE CONTROL ; SPI0DA T ; SERIAL PERIPHERAL INTERFACE 0 DA TA; SPI0CFG ; SERIAL PERIPHERAL INTERFACE 0 CONFIGURA TION; SPI0CN ; SERIAL PERIPHERAL INTERFACE 0 CONTROL;-- <13> --ADC转换; AMX0CF ; ADC 0 MUX CONFIGURA TION; AMX0SL ; ADC 0 MUX CHANNEL SELECTION; ADC0CF ; ADC 0 CONFIGURA TION; ADC0CN ; ADC 0 CONTROL; ADC0L ; ADC 0 DA TA - LOW BYTE; ADC0H ; ADC 0 DA TA - HIGH BYTE; ADC1CF ; ADC 1 ANALOG MUX CONFIGURA TION; AMX1SL ; ADC 1 ANALOG MUX CHANNEL SELECT; ADC1CN ; ADC 1 CONTROL; ADC0GTL ; ADC 0 GREA TER-THAN REGISTER - LOW BYTE; ADC0GTH ; ADC 0 GREA TER-THAN REGISTER - HIGH BYTE; ADC0LTL ; ADC 0 LESS-THAN REGISTER - LOW BYTE; ADC0LTH ; ADC 0 LESS-THAN REGISTER - HIGH BYTE; REF0CN ; VOLTAGE REFERENCE 0 CONTROL; ADC1 ; ADC 1 DA TA;■-- <14> --DAC转换; PCA0L ; PCA 0 TIMER - LOW BYTE; PCA0H ; PCA 0 TIMER - HIGH BYTE; DAC0CN ; DAC 0 CONTROL; DAC1L ; DAC 1 REGISTER - LOW BYTE; DAC1H ; DAC 1 REGISTER - HIGH BYTE; DAC1CN ; DAC 1 CONTROL;■-- <15> --比较器设置; CPT0CN ; COMPARA TOR 0 CONTROL; CPT1CN ; COMPARA TOR 1 CONTROL; EMI0TC ; EMIF TIMING CONTROL;■-- <16> --时钟/电压基准设置; CKCON ; CLOCK CONTROL; SADEN1 ; SERIAL PORT 1 SLA VE ADDRESS MASK; SADEN0 ; SERIAL PORT 0 SLA VE ADDRESS MASK; P1MDIN ; PORT 1 INPUT MODE; PSW ; PROGRAM STA TUS WORD; B ; B REGISTER; WDTCN ; W A TCHDOG TIMER CONTROL;◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆;;==================================================================== ; function: Init_CTS 定时器/计数器,中断和串行通讯初始化子程序; input: -----------------; output: -----------------; usage: -----------------;==================================================================== THS0 equ 0a8hTLS0 equ 09ah; THS1 equ 0fah;0feh;0fah;-4800;0f4h; TLS1 equ 0fah;0feh;0fah;-4800;0f4h;; THS2 equ 0ffh;0feh;0fah;-4800;0f4h; TLS2 equ 0b8h;0feh;0fah;-4800;0f4hInit_TCS: ;定时器/计数器,中断和串行通讯初始化子程序;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓; ◆◆◆8051内部控制寄存器◆◆◆;****************************************************************************** ******;|名称| 代号| 地址|位寻| B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 |;|--------|------|------|----|-----|------|------|------|------|------|------|------|;|电源控制| PCON | 87H | NO |SMOD | -- | -- | -- | GF1 | GF0 | PD | IDL |;|--------|------|------|----|-----|------|------|------|------|------|------|------|;|计时控制| TCON | 88H | YE |TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0 |;|--------|------|------|----|-----|------|------|------|------|------|------|------|;|计时模式| TMOD | 89H | NO |1GA TE| 1C/T | 1M1 | 1M0 | 0GA TE| 0C/T | 0M1 | 0M0 | ;|--------|------|------|----|-----|------|------|------|------|------|------|------|;|串行控制| SCON | 98H | YE |SM0 | SM1 | SM2 | REN | TB8 | RB8 | TI | RI |;|--------|------|------|----|-----|------|------|------|------|------|------|------|;|中断允许| IE | A8H | YE |EA| -- | ET2 | ES | ET1 | EX1 | ET0 | EX0 |;|--------|------|------|----|-----|------|------|------|------|------|------|------|;|中断优先| IP| B8H | YE |-- | -- | PT2 | PS | PT1 | PX1 | PT0 | PX0 |;****************************************************************************** ******;时钟频率为:11.059200MHz;;机器周期为:12/fosc=1.085069μs;;CT0定时器设定延时为:2000μs;;CT0定时器工作于模式0;;CT0溢出处理采用中断方式;;CT0选择内部时钟;;CT0启动由TR0的0/1决定;;设定波特率为:4800bps;;串口0工作于方式1--T1定时器工作于方式2;;串口1工作于模式3--T2定时器用于波特率发生器4800bpsmov TH0, #THS0mov TL0, #TLS0; mov TH1, #THS1; mov TL1, #TLS1; mov TH2, #THS2; mov TL2, #TLS2;▲■-- <1> --电源管理;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓;87H---PCON-------电源控制寄存器;复位值: 00000000;位7-2:保留。
单片机初始化过程
单片机初始化过程-概述说明以及解释1.引言1.1 概述单片机是一种集成了中央处理器、存储器和输入/输出设备的微型计算机系统。
在单片机的使用过程中,初始化是非常重要的一个步骤。
它涉及到对单片机硬件及软件的一系列设置和配置,确保单片机能够正常工作。
本文将从单片机初始化的概念、步骤和重要性进行探讨,并对未来单片机初始化的发展趋势和展望进行分析。
通过对单片机初始化过程的深入理解,可以更好地在实际应用中利用单片机的功能,提高系统性能和稳定性。
文章结构部分的内容如下:1.2 文章结构本文主要分为三个部分,即引言、正文和结论。
引言部分将介绍单片机初始化过程的概述,文章结构和目的,以便引起读者的兴趣和理解文章的主题。
正文部分将详细介绍单片机初始化的概念、步骤和重要性,帮助读者全面了解单片机初始化的过程和作用。
结论部分将总结单片机初始化的关键点,探讨单片机初始化的发展趋势和未来展望,为读者提供一个对单片机初始化过程的全面思考和理解。
通过这样的文章结构,读者可以系统地了解单片机初始化的全貌,深入思考单片机初始化的重要性和未来发展趋势,从而更好地应用和理解单片机初始化过程。
1.3 目的本文旨在深入探讨单片机初始化过程,介绍单片机初始化的概念、步骤以及其重要性。
通过对单片机初始化的详细解析,读者可以更好地理解单片机初始化的关键点,认识到单片机初始化在嵌入式系统设计中的重要作用。
同时,本文也将展望未来单片机初始化的发展趋势,为读者提供对未来单片机初始化技术的深入认识和思考。
通过本文的阅读,读者可以获取关于单片机初始化的全面知识,以便在实际应用中更加灵活和有效地进行单片机初始化工作。
2.正文2.1 单片机初始化的概念单片机初始化是指在单片机系统通电或复位时,系统从初始状态切换到可以正常工作状态的过程。
在单片机初始化过程中,系统需要进行一系列的设置和配置,以确保单片机可以正确地运行用户程序。
这个过程包括对各种硬件模块和外围设备进行初始化配置,如串行通信口、定时器、中断控制器等。
C8051F020入门指导
接到端口I/O引脚。
DAC为电压输出方式,有灵活的输出更新机制。这一机制允许 用软件写和定时器2、定时器3及定时器4的溢出信号更新DAC输出。
C8051F020/2的DAC之电压基准由专用的VREFD输入引脚提供,而
C8051F021/3的DAC之电压基准由器件内部的电压基准提供。DAC在 作为比较器的参考电压或为ADC差分输入提供偏移电压时非常有用。
1.9 比较器和DAC
C8051F020/1/2/3系列MCU内部有两个12位DAC和两个比较器。 MCU与每个比较器和DAC之间的数据和控制接口通过特殊功能寄存 器实现。MCU可以将任何一个DAC或比较器置于低功耗关断方式。 比较器的回差电压可以用软件编程。每个比较器都能在上升沿、下 降沿或在两个边沿都产生中断。这些中断能将MCU从休眠方式唤醒。比 较器的输出状态可以用软件查询。可通过设置交叉开关将比较器的输出
1.8 8 位模/数转换器
C8051F020有一个片内8位SAR ADC(ADC1),带有一个8通道输入多路 选择器和可编程增益放大器。该ADC工作在500ksps的最大采样速率时可提供 真正的8位精度,INL为±1LSB。有8个用于测量的输入端。ADC1完全由CIP51通过特殊功能寄存器控制。ADC0的电压基准可以在模拟电源电压(AV+) 和一个外部VREF引脚之间选择。
配置为两个单端输入或一个差分输入。
可编程增益放大器接在模拟多路选择器之后,增益可以用软件设置,从 0.5到16以2的整数次幂递增。 A/D转换有4种启动方式:软件命令、定时器2溢出、定时器3溢出和外部 信号输入。这种灵活性允许用软件事件、外部硬件信号或周期性的定时器 溢出信号触发转换。 转换结束由一个状态位指示,或者产生中断(如果中断被使能)。在转 换完成后,10或12位转换结果数据字被锁存到两个特殊功能寄存器中。这 些数据字可以用软件控制为左对齐或右对齐。
C8051F020学习笔记-IO初始化
二,使用过程中,常常出现程序的IO口设置,包括设置为交叉开关,推挽方式等。
由于对这种设置方法不太了解,因此做一个专题。
//--------------------------------------------------------------------// I/O初始化程序//--------------------------------------------------------------------// 配置交叉开关和 GPIO 端口void xbar_init (void){XBR0 = 0x07; // 允许 I2C SPI和 UARTXBR1 = 0x00; //XBR2 = 0x40; // 允许交叉开关和弱上拉//PRT0CF |= 0xff; // 允许P0口的所有输出为弱上拉//P0MDOUT// 让交叉开关将这些引脚配置为输入//PRT1CF |= 0x40; // 允许 P1.6 (LED) 为弱上拉输出}(通过对比几个程序的I/O初始化,发现主要是对寄存器XBR0~2以及PRT(0~7)CF进行设置。
特将与IO口设置相关的寄存器做一个说明)2.1 GPIO口和数字外设口C8051F020/1/2/3 MCU 是高集成度的混合信号片上系统,有按8 位端口组织的64 个数字I/O 引脚。
低端口(P0、P1、P2 和P3)既可以按位寻址也可以按字节寻址。
高端口(P4、P5、P6 和P7)只能按字节寻址。
所有引脚都耐5V 电压,都可以被配置为漏极开路或推挽输出方式和弱上拉。
C8051F020/1/2/3 器件有大量的数字资源需要通过4 个低端I/O 端口P0、P1、P2 和P3 才能使用。
P0、P1、P2 和P3 中的每个引脚既可定义为通用的端口I/O(GPIO)引脚,又可以分配给一个数字外设或功能(例如:UART0 或/INT1),这种资源分配的灵活性是通过使用优先权交叉开关译码器实现的。
C8051F系列单片机的初始化
C8051F系列单片机的初始化C8051F系列单片机是由美国Silicon Laboratories公司研发的一款8位微控制器,它具有强大的功能和灵活的性能,是一种广泛应用于各种电子设备中的微控制器。
在使用C8051F系列单片机之前,需要进行初始化操作,以确保单片机能够正常工作。
下面将介绍C8051F系列单片机的初始化过程。
1. 系统时钟初始化在初始化单片机之前,需要先配置它的系统时钟。
C8051F系列单片机的系统时钟可从外部晶体振荡器或内部RC振荡器提供。
通过设置相关的寄存器,可以选择使用哪一种时钟源,并配置其频率。
2. 系统时钟分频器初始化对于大多数应用程序而言,操作系统时钟的速度往往太快,因此需要对其进行分频,减少操作速度。
C8051F系列单片机提供了一个系统时钟分频器,通过设置相关的寄存器,可以选择分频比例,将操作速度减慢。
3. I/O端口初始化C8051F系列单片机具有多个I/O端口,用于输入和输出数据。
在初始化单片机时,需要设置每个I/O端口的输入和输出模式,以及电平状态和电流限制等参数。
4. 中断初始化C8051F系列单片机支持多种中断模式,可以在程序执行期间随时中断当前任务,处理新的事件。
在初始化单片机时,需要配置中断引脚和中断向量表等参数。
5. 定时器初始化C8051F系列单片机具有多个定时器,用于计时和延时等功能。
在初始化单片机时,需要设置每个定时器的计数模式、频率、触发条件和计时范围等参数。
6. 串口初始化C8051F系列单片机支持串口通信,可以与其他设备进行数据交换。
在初始化单片机时,需要设置串口的通信协议、波特率和数据格式等参数。
7. ADC/DAC初始化C8051F系列单片机具有模拟转换模块,可以对模拟信号进行采样和变换。
在初始化单片机时,需要设置ADC/DAC的采样率、分辨率和参考电压等参数。
通过以上步骤,就可以完成C8051F系列单片机的初始化。
在开发具体应用程序时,还需要根据实际需求对各个模块进行进一步配置和编程。
C8051F020入门指导解读
MCU 的程序存储器包含64K 字节的FLASH。该存储器 以512 字节为一个扇区,可以在系统编程,且不需特别的 外部编程电压。
1.3 JTAG 调试和边界扫描
C8051F020系列具有片内JTAG边界扫描和调试电路, 通过4脚JTAG接口并使用安装在最终应用系统中的产品器 件就可以进行非侵入式、全速的在系统调试。 该JTAG接口完全符合IEEE1149.1规范,为生产和测试 提供完全的边界扫描功能。 Silicon Labs的调试系统支持观察和修改存储器和寄 存器,支持断点、观察点、堆栈指示器和单步执行。
在一个标准的8051 中,除MUL 和DIV 以外所有指令 都需要12 或24 个系统时钟周期,最大系统时钟频率为 12-24MHz。 而对于CIP-51 内核,70%的指令的执行时间为1 或2 个系统时钟周期,只有4 条指令的执行时间大于4 个系统 时钟周期。
1.1.3 增加的功能
扩展的中断系统向CIP-51 提供22 个中断源(标准8051 只有7 个中断源),允许大量的模拟和数字外设中断微控 制器。 MCU 可有多达7 个复位源:一个片内VDD 监视器、一 个看门狗定时器、一个时钟丢失检测器、一个由比较器0 提供的电压检测器、一个软件强制复位、CNVSTR 引脚 及/RST 引脚。 MCU 内部有一个独立运行的时钟发生器,在复位后被默 认为系统时钟。如果需要,时钟源可以在运行时切换到外 部振荡器,外部振荡器可以使用晶体、陶瓷谐振器、电容、 RC 或外部时钟源产生系统时钟。
1.4 可编程数字I/O 和交叉开关
该系列MCU具有标准8051的端口(0、1、2和3)。在 F020/2中有4个附加的端口(4、5、6和7),因此共有64 个通用端口I/O。 每个端口I/O引脚都可以被配置为推挽或漏极开路输出。 数字交叉开关。
单片机C8051F020的初始化设置
单片机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); // 设置定时器1TR1 = 1; // 开始定时CKCON |= 0x10; // 定时器用SYSCLK作基准时间PCON |= 0x80; // 禁止UART0波特率/2}SCON0是UART0控制寄存器,用来选择传输模式。
C8051F020入门指导
DAC为电压输出方式,有灵活的输出更新机制。这一机制允许
用软件写和定时器2、定时器3及定时器4的溢出信号更新DAC输出。
C8051F020/2的DAC之电压基准由专用的VREFD输入引脚提供,而
C8051F021/3的DAC之电压基准由器件内部的电压基准提供。DAC在
作为比较器的参考电压或为ADC差分输入提供偏移电压时非常有用。
➢
真正8 位500 ksps 的ADC,带PGA 和8 通道模拟多路开关
➢
两个12 位DAC,具有可编程数据更新方式
➢
64K 字节可在系统编程的FLASH 存储器
➢
4352(4096+256)字节的片内RAM
➢
➢
可寻址64K 字节地址空间的外部数据存储器接口
硬件实现的SPI、SMBus/ I2C 和两个UART 串行接
I/O 引脚(C8051F021/3)。下面列出了一些主要特性:
➢
高速、流水线结构的8051 兼容的CIP-51 内核(可达25MIPS)
➢
全速、非侵入式的在系统调试接口(片内)
➢
真正12 位(C8051F020/1)或10 位(C8051F022/3)、 100
ksps 的8 通道ADC,带PGA和模拟多路开关
➢
端口0–3中所有未被交叉开关分配的引脚都可以作为通用I/O
(GPI/O)引脚,通过读或写相应的端口数据寄存器访问。
➢
被交叉开关分配的那些端口引脚的输出状态受使用这些引脚
的数字外设的控制。
➢
不管交叉开关是否将引脚分配给外设,读一个端口数据寄存器
(或端口位)将总是返回引脚本身的逻辑状态。
➢
C8051F020实验指导书
单片机真验指挥书籍之阳早格格创做目录第一章:真验设备简介11.1 系统真验设备的组成11.2 Silicon Labs C8051F 单片机开垦工具简介11.3 DICE-C8051F嵌进式真验/开垦系统简介3第二章集成开垦环境KEIL C硬件使用指北7 2.1 KEIL C硬件简曲使用证明7第三章真验指挥193.1 C8051F 单片机I/O 心接叉开关树坐193.2 数字I/O端心真验213.3 定时器真验233.4 中部中断真验253.5 键盘隐现真验273.6 六位动背LED数码管隐现真验293.7 RS3232串心通讯真验313.8 概括安排33使用特天证明:(1) 屡屡真验前,请小心阅读真验指挥,连线完成,查看无误后,圆可挨开电源.即连线时必须正在断电状态下.(2) 步调运止历程中,不要关关电源,如果要断电,必须停止运止步调,而且退出步调调试状态,可则会引起KEIL C硬件非仄常退出,以至引起DICE-EC5仿真器处事非常十分.(3) 如出现上述(2)的的误支配,引起DICE-EC5仿真器处事非常十分,可对于DICE-EC5仿真器举止复位.(正在光盘中找到文献夹“USB Reset”中的“USB Debug AdapterFirmware Reset”文献,单打运止,正在弹出的对于话框中面打“Update firmware”按钮,正在提示乐成后,面打“OK”按钮,退出复位步调.DICE-EC5仿真器即可仄常处事.正在下一次调试、下载步调时会提示“Do you want to update serial adapternow? ”,面打“决定”即可.第一章:真验设备简介1.1 系统真验设备的组成DICE-C8051F嵌进式真验/开垦系统由C8051F020 CPU 板、DICE-EC5仿真器战系统真验板三部分组成,应用该设备可举止片上系统单片机较典型应用的真验,请拜睹以下介绍.1.2 Silicon Labs C8051F 单片机开垦工具简介1.2.1 开垦工具概括Silicon Labs 的开垦工具真量上便是估计机IDE 调试环境硬件及估计机USB 到C8051F单片机JTAG 心的协议变换器(DICE-EC5)的推拢.SiliconLabs C8051F 系列所有的单片机片内均安排有调试电路,该调试电路通过鸿沟扫描办法获与单片机片内疑息,通过4 线的JTAG接心与开垦工具对接以便于举止对于单片机正在片编程调试.DICE-C8051F嵌进式真验/开垦系统中的C8051F020 CPU 板上的单片机为C8051F 系列中的F020.仿真器(DICE-EC5)一端与估计机贯串,另一端与C8051F 单片机JTAG 心贯串,应用Keil 的uVision2 调试环境便不妨举止非侵进式、齐速的正在系统编程(ISP)战调试.Silicon Labs 开垦工具支援瞅察战建改死存器战寄存器支援断面、瞅察面、堆栈指示器、单步、运止战停止下令.调试时不需要特殊的目标RAM、步调死存器、定时器大概通疑通讲,而且所有的模拟战数字中设皆仄常处事.1.2.2 开垦工具主要技能指标●支援的目标系统:所有C8051Fxxx 系列单片机.●系统时钟:最大可达25Mhz.●通过USB 接心与PC 机对接.●支援汇编谈话战C51 源代码级调试.●工具支援(Keil C).1.2.3 IDE 硬件运止环境央供PC 机不妨运止开垦工具硬件并能与串止适配器通疑.对于PC 机犹如下系统央供:● Windows 95/98/Me/NT/2000/XP 支配系统● 32Mb RAM● 40Mb 自由硬盘空间●空忙的USB 心1.2.4 开垦工具与PC 机硬件对接正在系统编程战调试环境如图下所示.硬件对接及硬件拆置:●将USB 串止电缆的一端与教教机的DICE-EC5仿真器USB接心对接;●对接USB 串止电缆的另一端到PC;●给目标系统上电;●拔出CD 并运止“”,将IDE 硬件拆置到您的PC 机;●正在PC 机的开初菜单的“步调”项中采用keil uVision2图标,运止IDE 硬件.1.3 DICE-C8051F嵌进式真验/开垦系统简介1.3.1 C8051F020 CPU 板概括C8051F020 CPU 板是为了便于拆置而安排的;C8051F020 CPU 板是将C8051F020的所有引足(100 个引足)引到四个单排针;该四组单排针可与分歧用户安排的应用系统对接,如正在该教教系统上将战系统真验板对接.证明: C8051F020 CPU 板是将C8051F020的所有引足(100 个引足)引到四个单排针,分别为JX1、JX2、JX3、JX4,四个单排针的内圈100个排针(内圈每个引足证明引足含意)与C8051F020芯片的对于应引足对接.而四个单排针的中圈100个排针(中圈标有引足号)部分引足悬空,而大部分引足已经与真验仪上的真验模块对接.(简曲对接请瞅硬件对接本理图).果此,本真验/开垦系统大部分真验模块只消将其相映引足的短路块插佳,即可真止与C8051F020单片机系统的对接.而一部分独力真验模块,必须通过导线与C8051F020单片机对接,对接前把要用到的引足上的短路块拔掉,而后用导线将内圈对于应引足与中部模块对接.真验完成后再把相映的短路块插佳.1.3.2 C8051F020 片上系统单片机片内资材①、模拟中设(1) 逐次迫近型8 路12 位ADC0变换速率最大100ksps可编程删益搁大器PGA温度传感器(2) 8 路8 位ADC1 输进与P1 心复用变换速率500ksps可编程删益搁大器PGA(3) 二个12 位DAC(4) 二个模拟电压比较器(5) 电压基准里里提供中部基准可输进(6) 透彻的VDD 监视器②、下速8051 微统造器内核流火线式指令结构速度可达25MIPS22 个矢量中断源③、死存器片内4352 字节数据RAM64KB Flash 步调死存器可做非易得性死存中部可扩展的64KB 数据死存器接心④、数字中设8 个8 位的端心I/OI2C、SPI、2 个巩固型UART 串心可编程的16 位计数器/定时器阵列(PCA)5 个通用16 位计数器/定时器博用的瞅门狗WDT更小心资料可拜睹Silicon Labs C8051F02x datasheet1.3.3DICE-C8051F嵌进式真验/开垦系统硬件组成(1)CPU板:CPU核心模块采与C8051F020芯片,该芯片是C8051F系列单片机中功能最为其齐的一款;(2)片内:64K FLASH, 4K XRAM片中扩展:256K FLASH, 32K XRAM(3)CPU板C8051F020芯片I/0引足局部引出,不妨战用户中部电路对接;(4)真验系统戴有JTAG接心,并配有DICE-EC3型USB下速通讯仿真器,通过4足的JTAG接心不妨举止非侵进式、齐速的正在线系统调试、仿真;(5)4*4阵列式键盘;(6)8位逻辑电仄开关输出、8位LED逻辑电仄隐现;(7)6位动背八段LED数码管;(8)2路单脉冲旗号爆收电路战1路8MHZ时钟爆收电路;(9)时钟分频电路;(10)模拟量爆收器电路战逻辑笔电路;(11)8*8LED面阵及启动电路;(12)128*64 LCD液晶隐现屏;(13)蜂鸣器电路;(14)曲流电机测速电路;(15)四相步进电机及启动电路;(16)继电器电路及接心;(17)单通讲RS-232 接心;(18)SPI 接心,LED 数码管隐现;(19)IIC 接心,接24C01 串止EEPROM;(20)IIC 接心,PCF8563日历时钟;(21)8 路12 位AD,2 路12 位DA 接心;(22)D12 USB 从机通疑;(23)SL811 USB 主机通疑;(24)RTL8019 10M 以太网通疑;1.3.4DICE-C8051F嵌进式真验/开垦系统天面及初初化证明●天面调配如下:0x0000-0x7fff,数据死存器SRAM天十范畴0x8000-0x87ff,D12_CS片选0x8800-0x8fff,SL811_CS片选0x9000-0x97ff,RTL8019_CS片选0x9800-0x9fff,LCD_CS片选0xA000-0xA7ff,死存0xA800-0xAfff,死存0xB000-0xB7ff,死存0xB800-0xBfff,死存0xc000-0xffff(x16),Flash,片选天面由P4 矮4 位端心决定●系统初初化:C8051F020 CPU板使用中部22.1184M 晶振,系统初初化后应用中部22.1184M 晶振,如果不举止系统初初化,系统将使用里里晶振,默认值为2M,也不妨通过树坐OSCICN 寄存器改变里里晶振的大小(可选值为2M、4M、8M、16M).●端心初初化:咱们根据c8051F020 CPU板及真验系统安排规划,摆设接叉开关,为UART0、SPI、SMBus、UART1、CEX0、CP0、T0、T1、INT0、INT1、INT2 战INT3 调配端心引足.其余,咱们将中部死存器接心摆设为复用办法并使用下端心.摆设步调如下:(1) 按CP0E=1,ECI0E=0,PCA0ME=001,UART0EN=1,SPI0EN=1,SMB0EN=1 树坐XBR0=0x8f;(2) 按SYSCKE=0,T2EXE=0,T2E=0,INT1E=1,T1E=1,INT 0E=1,T0E=1,CPI1E=0 树坐XBR1=0x1e;(3) 按WEAKPUD=0,XBARE=1,位5为0 用T4EXE=0,T4E=0,UART1E=1,EMIFLE=0,CNVSTE=0 树坐XBR2=0x44(4) 将中部死存器接心摆设为复用办法,并使用下端心,有PRTSEL=1,EMD2=0.(5) 将动做数字输进的端心1 引足摆设为数字输进办法,树坐P1MDIN 为0xFF.(6) 通过树坐P0MDOUT=0x34 、P1MDOUT=0xfd 、P2MDOUT= 0xf0 、P3MDOUT = 0xff,将矮端心输出办法树坐为推挽办法.树坐下端心输出办法P74OUT=0xf7;总线输出办法应试虑处事频次战启动本领,正在下速战下启动时总线应树坐为推挽办法,正在矮速战矮启动时漏极开路也可谦足央供,但是宁静性不下.(7) 树坐中部死存器摆设EMI0CF=0x2d;树坐中部死存器时序统造EMI0TC=0x9e;如果LCD 不克不迭仄常隐现不妨使EMI0CF=0x2f,EMI0TC=0xff 树坐为最大值;也不妨减小中部晶振大概使用里里晶振.第二章集成开垦环境KEIL C硬件使用指北2.1 KEIL C硬件简曲使用证明Keil C 拆置:睹..\tools\KeilC51v751a_Full\拆置证明.txt;拆置完成后,如果要使用DICE-EC5仿真器去仿真C8051F系统单片机,还需要拆置启动步调:加进“”,面打“SiC8051F_uv2”,曲至拆置完成.加进 Keil C51 后,屏幕如下图所示.几秒钟后出现编写界开用Keil C51时的屏幕加进Keil C51后的编写界里简朴步调的调试:教习步调安排谈话、教习某种步调硬件,最佳的要领是间接支配试验.底下通过简朴的编程、调试,带领大家教习Keil C51硬件的基础使用要领战基础的调试本领. 1)建坐一个新工程单打Project菜单,正在弹出的下推菜单中选中New Project选项2)而后采用您要死存的路径,输进工程文献的名字,比圆死存到C51目录里,工程文献的名字为C51.如下图所示,而后面打死存.3)那时会弹出一个对于话框,央供您采用单片机的型号,您不妨根据您使用的单片机去采用,keil c51险些支援所有的51核的单片机,尔那里仍旧以大家用的比较多的Atmel 的89C51去证明,如下图所示,采用89C51之后,左边栏是对于那个单片机的基础的证明,而后面打决定.(注意:咱们真验系统使用的单片机为Silicon Laboratories公司的C8051F020芯片).4)完成上一步调后,屏幕如下图所示到目前为止,咱们还不编写一句步调,底下开初编写咱们的第一个步调.5)正在下图中,单打“File”菜单,再正在下推菜单中单打“New”选项新建文献后屏幕如下图所示此时光标正在编写窗心里闪烁,那时不妨键进用户的应用步调了,但是笔者提议最先死存该空黑的文献,单打菜单上的“File”,正在下推菜单中选中“Save As”选项单打,屏幕如下图所示,正在“文献名”栏左侧的编写框中,键进欲使用的文献名,共时,必须键进透彻的扩展名.注意,如果用C谈话编写步调,则扩展名为(.c);如果用汇编谈话编写步调,则扩展名必须为(.asm).而后,单打“死存”6)回到编写界里后,单打“Target1”前里的“+”号,而后正在“Source Group 1”上单打左键,弹出如下菜单而后单打“Add File to Group ‘Source Group 1’”屏幕如下图所示选中Test.c,而后单打“Add”屏幕佳下图所示“Source Group 1”文献夹中多了一身材项“Text1.c”了吗?子项的几与所减少的源步调的几相共 .7)目前,请输进如下的C谈话源步调: #include<reg52.h> //包罗文献#include<stdio.h>void main(void) //主函数{SCON=0x52;TMOD=0x20; TH1=0xf3;TR1=1; //此止及以上3止为PRINTF函数所必须printf(“Hello I am KEIL. \n”);//挨印步调真止的疑息printf(“I will be your friend.\n”);while(1);} 正在输进上述步调时,读者已经瞅到了预先死存待编写的文献的佳处了吧,即Keil c51会自动辨别关键字,并以分歧的颜色提示用户加以注意,那样会使用户少犯过得,有用处普及编程效用.步调输进完成后,如下图所示:8)正在上图中,单打“Project”菜单,再正在下推菜单中单打“Built Target”选项(大概者使用快速键F7),编译乐成后,再单打“Project”菜单,正在下推菜单中单打“Start/Stop Debug Session”(大概者使用快速键Ctrl+F5),屏幕如下所示 :9)调试步调:正在上图中,单打“Debug”菜单,正在下推菜单中单打“Go”选项,(大概者使用快速键F5),而后再单打“Debug”菜单,正在下推菜单中单打“Stop Running”选项(大概者使用快速键Esc);再单打“View”菜单,再正在下推菜单中单打“Serial Windows #1”选项,便不妨瞅到步调运止后的截止,其截止如下图所示至此,咱们正在Keil C51上搞了一个完备工程的齐历程.但是那不过杂硬件的开垦历程,怎么样使用步调下载器瞅一瞅步调运止的截止呢?下一节咱们将介绍Keil C硬件与DICE-EC3仿真器的摆设证明.2.2 KEIL C 硬件与DICE-EC5仿真器摆设证明1.本摆设是针对于本公司的仿真开垦工具DICE-EC5的摆设要领;2.Keil C 硬件摆设如下:挨开Keil 硬件,新建一工程,采用Silicon Laboratories公司的C8051F020 动做CPU(根据本量CPU):(1)采用摆设如下图:(2)隐现如下图:(3)OUTPUT选项摆设:(4)A51汇编选项:(5)DEBUG选项:面打”Settings”此时必须决定DICE-EC5仿真器与PC处于联机状态!!!面打决定,完成树坐.第三章真验指挥3.1 C8051F 单片机I/O 心接叉开关树坐劣先权接叉开关译码器,大概称为“接叉开关”,按劣先权程序将端心0 – 3 的引足调配给器件上的数字中设(UART、SMBus、PCA、定时器等).端心引足的调配程序是从开初,不妨背去调配到P3.7.UART0有最下劣先权,而CNVSTR具备最矮劣先权.为数字中设调配端心引足的劣先权程序列于下图.当接叉开关摆设寄存器XBR0、XBR1 战XBR2 中中设的对于应允许位被树坐为逻辑‘1’时,接叉开关将端心引足调配给中设,相关的特殊功能寄存器的定义睹数据脚册大概相关书籍籍.接叉开关引足调配示例:正在本例中,咱们将摆设接叉开关,为UART0、SMBus、UART1、/INT0 战/INT1 调配端心引足(共8 个引足).其余,咱们将中部死存器接心摆设为复用办法并使用矮端心.咱们还将、P1.3 战P1.4 摆设为模拟输进,以便用ADC1 丈量加正在那些引足上的电压.摆设步调如下:(1)按UART0EN = 1、SMB0EN = 1、INT0E = 1、INT1E = 1 战EMIFLE =1 树坐XBR0、XBR1 战XBR2,则有:XBR0 = 0x05,XBR1 = 0x14,XBR2 = 0x02.(2)将中部死存器接心摆设为复用办法并使用矮端心,有:PRTSEL = 0,EMD2 = 0.(3)将动做模拟输进的端心1 引足摆设为模拟输进办法:树坐P1MDIN 为0xE3(、P1.3 战P1.2 为模拟输进,所以它们的对于应P1MDIN 被树坐为逻辑‘0’).(4)树坐XBARE = 1 以允许接叉开关:XBR2=0x42.●UART0 有最下劣先权,所以P0.0 被调配给TX0,P0.1 被调配给RX0.●SMBus 的劣先权次之,所以P0.2 被调配给SDA,P0.3 被调配给SCL.●接下去是UART1,所以P0.4 被调配给TX1.由于中部死存器接心选正在矮端心(EMIFLE = 1),所以接叉开关跳过P0.6(/RD)战P0.7(/WR).又果为中部死存器接心被摆设为复用办法,所以接叉开关也跳过P0.5(ALE).下一个已被跳过的引足P1.0 被调配给RX1.●接下去是/INT0,被调配到引足.●将P1MDIN 树坐为0xE3,使、P1.3 战P1.4 被摆设为模拟输进,引导接叉开关跳过那些引足.●底下劣先权下的是/INT1,所以下一个已跳过的引足P1.5 被调配给/INT1.●正在真止对于片中支配的MOVX 指令功夫,中部死存器接心将启动端心2 战端心3.(5)咱们将UART0 的TX 引足(TX0,)、UART1 的TX 引足(TX1,)、ALE、/RD、/WR(P0.[7:3])的输出树坐为推挽办法,通过树坐P0MDOUT = 0xF1 去真止.(6)咱们通过树坐P2MDOUT = 0xFF 战P3MDOUT = 0xFF 将EMIF 端心(P2、P3)的输出办法摆设为推挽办法.咱们通过树坐P1MDOUT = 0x00(摆设输出为漏极开路)战P1 = 0xFF(逻辑‘1’采用下阻态)克制3 个模拟输进引足的输出启动器.3.2 数字I/O端心真验一、真验脚段掌握C8051F020 I/0的使用,教习延时子步调的编写.二、真验真量P1心输出心,接八只收光二极管,编写步调,使收光二极管循环面明.三、真验本理介绍C8051F020有8位端心构造的64个数字I/O引足.矮端心(P0、P1、P2、P3)既不妨按位觅址,也不妨按字节觅址.下端心(P4、P5、P6、P7)只可按字节觅址.所有引足皆耐5V电压,皆不妨被摆设为漏极开路大概推挽输出办法战强上推.C8051F020器件有洪量的数字资材需要通过4个矮端I/O端心P0,P1,P2,P3才搞使用.但是本真验中主要介绍的I/O心主要动做通用的端心I/O (GPIO)引足去使用.每个端心引足的输出办法皆可被摆设为漏极开初大概推挽办法,缺省状态为漏极开路.正在推挽办法,背端心数据寄存器中的相映位写逻辑0将使端心引足被启动到GND,写逻辑1将使端心引足被启动到VDD.正在漏极开路办法,背端心数据寄存器中的相映位写逻辑0将使端心引足被启动到GND,写逻辑1将使端心引足处于下阻状态.当系统中分歧器件的端心引足有共享对接,即多个输出对接到共一个物理线时(比圆SMBus对接中的SDA旗号),使用漏极开路办法不妨预防分歧器件之间的争用.I/O端心的输出办法由PnMOUT寄存器中的对于应位决断.本真验中咱们用P1心启动收光二极管面明,果此必须将P1心定义为推挽办法.四、电路本理图五、真验步调框图六、真验步调步调功能:由P1心启动收光二极管循环面明.P1.0~P1.7接L1~L8(JP14)3.3 定时器真验一、真验脚段掌握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心与引足49上插有短路块,则收光二极管L1与P3.5已连.调进步调、拆载、运止,瞅察收光二极管是可每隔1秒明1次.3.4 中部中断真验一、真验脚段认识C8051F020 中部中断6/7 的使用.二、真验真量此步调尝试C8051F020的中断6、7,可正在相映的二其中断中设断面瞅察,当单脉冲按钮按下之后,加进中断处理时P4.4统造蜂鸣器鸣喊一声,收光二极管也共时闪烁一次.三、真验本理介绍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将转背对于应的中断背量天面.端心3中断标记位:位7 IE7 中部中断7标记位0当检测到P3.7引足的下落沿大概降下沿时,该标记由硬件置位位6 IE6 中部中断6标记位0当检测到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接JP7;P3.7接JP7;P4.4用短路块接蜂鸣器.按下单脉冲按钮,JP7爆收一个下落沿脉冲,加进中断后,蜂鸣器鸣喊一声,相映收光二极管也共时闪烁一次.3.5键盘隐现真验一、真验脚段掌握止列式键盘的处事本理.二、真验真量每按下一个键,蜂鸣器响一声,并正在LED数码管上隐现相映的字符.三、真验本理介绍正在键盘中按键数量较多时,为了缩小I/O心的占用,常常将按键排列成矩阵形式,也便是常道的止列式键盘.止列式键盘中的键本量上便是一个板滞开关,该开关位于止线战列线的接面处.当键被按下时,其接面的止线战列线接通,相映止线大概列线上的电仄爆收变更,进而决定被按下的功能键.时常使用的键辨别要领有:止扫描法、线翻转法战利用8279键盘接心的中断法.前二种要领相称于查询法,需要反复查询按键的状态,会占用洪量的CPU时间;后一种要领正在有键按下时背CPU申请中断,通常本去不需要占用CPU时间.本真验中咱们介绍止扫描法,其按键识别的历程如下:A:将局部止线SEL0~SEL3置为矮电仄,而后检测列线的状态.只消有一列的电仄为矮,则表示键盘中有键被按下,而且关合的键位于矮电仄线与4根止线相接叉的4个按键之中.若所列线均为下电仄,则键盘中无键按下.B:推断关合键天圆的位子.正在确认有键按下后,即可加进决定简曲关合键的历程.其要领是:依次将止线置为矮电仄,即正在置某根止线为矮电通常,其线为下电仄.正在决定某根止线位子为矮电仄后,再逐止检测各列线的电仄状态.若某列为矮,则该列线与置为矮电仄的止线接叉处的按键便是关合的按键.四、真验本理图五、真验步调框图(注:真验时只需LED数码管隐现)六、真验步调定义16个键为'0'~'F',每按下一个键,蜂鸣器响一声,并正在LED数码管上隐现相映的字符.P5.0~P5.3接SEL0~SEL3,P5.4~P5.7接RL0~RL3,P4.4接ALARM,P3.5接L1(JP14)(以上连线里里已经连佳,只消将对于应的短路块插上即可.),P1.0~P1.7接a~dp(JP18,LED段码端),P0.0接LED大众端所有一端(JP17).3.6 六位动背LED数码管隐现真验一、真验脚段认识并掌握LED七段数码管的处事本理,并掌握动背数码管的步调编写.二、真验真量本真验主假如六位八段LED数码管动背隐现,例步调隐现“123456”.三、真验本理介绍正在单片机应用系统中可利用LED隐现块机动天形成所央供位数的隐现器.N位LED隐现器有N 根位选线战8×N根段选线.根据隐现办法的分歧,位选线战段选线的对接要领有所分歧.段选线统造字符采用,位选线统造隐现位的明大概暗.LED隐现器有二种隐现办法:固态隐现战动背隐现.本真验介绍动背LED数码管的处事本理.LED动背隐现是将所有位的段选线并接正在一个I/O心上,共阳极度大概共阳极度分别由相映的I/O心线统造.每一位的段选线皆接正在一个I/O心上,所以每支一个段选码,每位LED数码管皆隐现共一个字符,那种隐现器是不克不迭用的.办理此问题的要领是利用的视觉滞留,从段选线上按位次分别支隐现字符的段选码,正在位选统造心也按相映的序次分别选通相映的隐现位(共阳极支矮电仄,共阳极支下电仄),选通位便隐现相映字符,并脆持几亳秒的延时,已选通位不隐现字符(脆持燃烧).那样,对于诸位隐现便是一个循环历程.从估计机的处事去瞅,正在一个瞬时惟有一位隐现字符,而其余位皆是燃烧的,但是果为人的视觉滞留,那种动背变更是觉察不到的.从效验上瞅,诸位隐现器能连绝而宁静天隐现分歧的字符.那便是动背隐现.四、真验本理图五、真验步调框图六、真验步调本步调主假如六位八段LED数码管动背隐现,例步调隐现“123456”.p1.0~p1.7接JP18(a~dp LED段码端);p0.0~p0.5接JP17(L1~L6 LED大众端);注意:拿掉相映足的短路块,用导线对接,并注意引足程序.3.7 RS3232串心通讯真验一、真验脚段掌握RS-232 串心通疑步调的安排战支配.二、真验真量(1)此例程是用UART0 动做串心通疑,硬件将其摆设到P0.0 战;(2)UART0是串心的中接心,为举止串心通疑,正在PC 端用串心调试帮脚硬件协共调试(利用其余串心通疑步调也不妨),用一根串心线将UART0串止心共PC 的串心贯串,波特率牢固为115200,通疑要领:1 位起初位,8 位数据位,1 位停止位.(3)MAX3232芯片将单片机收出的TTL 电仄转移为RS-232 电仄旗号,支/收旗号从9 芯插座UART0通过RS-232 电缆传递到PC 机.三、真验本理介绍每个C8051F MCU皆有能举止同步传输的串止心(UART).C8051F020有二个功能真足相共的UART(分别为UART0战UART1),它们除了具备8051尺度串止心的功能中,还具备帧过得检测战天面辨别硬件,称为巩固型串止心UART.UART不妨处事正在齐单工同步办法大概半单工共步办法,而且支援多处理器通疑.接支数据被久存于一个脆持寄存器中,那便允许UART 正在硬件尚已读与前一个数据字节的情况下开初接支第二个输进数据字节.一个接支覆盖位用于指示新的接支数据已被锁存到接支慢冲器而前一个接支数据尚已被读与.对于UART的统造战考察是通过相关的特殊。
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 说明。
C8051F单片机入门学习流程
C8051F单片机入门学习流程一. 准备硬件及软件1.C8051F任意一款开发板(以C8051F330ST为例)。
2.EC3仿真器。
3.Keil C51开发软件到下载二. 开发者具备基本知识1.对MCS51架构单片机有基本了解。
2.有基本C语言及汇编语言编程经验。
3.对单片机开发过程有基本了解。
三. 学习过程如下1.安装Keil C51软件。
(1)找到Keil uv3 (版本 V8.02)软件目录,并点击C51v802.exe安装(2)点击Next(3)选I agree…, 点击Next(4)默认目录(千万不要选择其它目录),点击Next(5)填写用户名等,点击Next(6)开始安装,等待….(7)安装完成,点击Finish(8)打开Keil C软件,选择File/License Management…(9)显示如下:(10)打开Keil_lic_v2.exe,并按如下设置,点击Generate(11)拷贝LIC0内的序列号:(12)粘贴序列号到Keil C软件的New License ID Code下,(13)点击Add LIC,添加序列号成功。
如果添加失败,请重启电脑并进入安全模式,重新安装序列号。
Keil C 软件安装完毕2.安装C8051F单片机针对Keil C51驱动程序。
(1)找到Keil C51驱动程序软件目录,并点击SiC8051F_uv3_v2.31.exe安装(如果前面安装的是Keil uv2, V7.02或V7.50,请点击SiC8051F_uv2_v2.31.exe安装驱动)(2)点击Next(3)点击Next(4)点击Next(5)选择I accept…, 点击Next(6)点击Next(7)点击Next(不要更改目录)(8)开始安装(9)点击Finish安装完成!3. EC3仿真器、开发板连接及开发软件Keil C软件配置(1)将EC3仿真器与开发板连接好,按1.2.3.4步连接(2) 将EC3仿真器与电脑连接好, 仿真器指示灯亮(3) 上述连接确认无误,将开发板电源线(USB接口)与电脑连接好,再连接到开发板上(4)打开Keil Vision3软件,新建一工程ML-Test(或者将学习板光盘上的测试程序拷贝到电脑硬盘上,用Keil Vision3打开,注意将文件属性更改为可读写):(5)选择C8051F330作为CPU:(6)选择配置如下图:(7)显示如下图:(8)选择Debug项,配置如下图:(9)选择Settings项,配置如下图:(10)点击确定,完成设置;(11)编译并下载程序即可调试了;4. 用Keil C51打开软件例程,编译下载程序并运行。
C8051F020-IO初始化
I/O口设置C8051fxx系列单片机使用过程中,常常出现程序的IO口设置,包括设置为交叉开关,推挽方式等。
由于对这种设置方法不太了解,因此做一个专题。
//--------------------------------------------------------------------//I/O初始化程序//--------------------------------------------------------------------//配置交叉开关和GPIO端口void xbar_init(void){XBR0=0x07;//允许I2C SPI和UARTXBR1=0x00;//XBR2=0x40;//允许交叉开关和弱上拉//PRT0CF|=0xff;//允许P0口的所有输出为弱上拉//P0MDOUT//让交叉开关将这些引脚配置为输入//PRT1CF|=0x40;//允许P1.6(LED)为弱上拉输出}(通过对比几个程序的I/O初始化,发现主要是对寄存器XBR0~2以及PRT(0~7)CF进行设置。
特将与IO口设置相关的寄存器做一个说明)1.1GPIO口和数字外设口C8051F020/1/2/3MCU是高集成度的混合信号片上系统,有按8位端口组织的64个数字I/O引脚。
低端口(P0、P1、P2和P3)既可以按位寻址也可以按字节寻址。
高端口(P4、P5、P6和P7)只能按字节寻址。
所有引脚都耐5V电压,都可以被配置为漏极开路或推挽输出方式和弱上拉。
C8051F020/1/2/3器件有大量的数字资源需要通过4个低端I/O端口P0、P1、P2和P3才能使用。
P0、P1、P2和P3中的每个引脚既可定义为通用的端口I/O(GPIO)引脚,又可以分配给一个数字外设或功能(例如:UART0或/INT1),这种资源分配的灵活性是通过使用优先权交叉开关译码器实现的。
注意,不管引脚被分配给一个数字外设或是作为通用I/O,总是可以通过读相应的数据寄存器得到端口I/O引脚的状态。
C8051F开发环境和烧录环境
一.C8051F开发环境之Keil C51
下图是开发环境界面。
使用Keil C51的话,则需要安装C8051F系列单片机的调试驱动程序。
这个程序可以在Silabs 的官方网上下载。
SiC8051F_uVision_v3.21.zip或者更新的版本。
在安装这个程序前需要先安装Keil C51. 然后把上述文件安装到Keil C51所在的目录。
安装完毕后,任意打开C51的一个工程(如开发板工程Source Code\LED_Flow\project),先进行一系列的设置。
如下所示:
第一步:在Project 菜单下面选择Option for Target “xxxxxx”
第二步:点击后打开选项对话框,在Debug选项卡上,选择如下图所示。
第三步:选择FLASH烧写工具,在同一个对话框中选择Utilities
最好选择OK确认,Keil C51 调试和烧写环境就配置好了。
我们以开发板的Source Code\LED_Flow\project为例,打开后
第一步:按Rebuild all target files重新编译整个工程。
第二步:用C2调试器连接开发板,上电,点击Keil C51的Start/Stop Debug Session.
如果没有问题的话,将弹出烧写FLASH的窗口:
二、烧录环境配置和烧录步骤
可以用u-ec5中文下载程序直接进行单片机程序的烧录(烧录文件为HEX的文件):
1、先安装u-ec5中文下载程序
2、进行烧录端口配置:1)点菜单栏的选择:得到:
确保调试接口类型为C2,选择‘USB系列’!
3、烧录步骤:见图中所示
烧录完毕后退出!。
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仿真器和系统实验板三部分组成,应用该设备可进行片上系统单片机较典型应用的实验,请参见以下介绍。
单片机程序的流程
单片机程序的流程单片机(Microcontroller)是一种集成电路,内部包含了微处理器、存储器和各种输入输出接口。
它广泛应用于各个领域,例如家电、汽车电子、工业自动化等。
而编写单片机程序则是为了实现特定的功能,通过一系列的流程指令来控制单片机的操作。
本文将介绍单片机程序的流程,包括初始化、主循环和中断处理等。
一、初始化初始化是单片机程序的第一个步骤,它的主要目的是配置单片机的各个功能模块和引脚的状态。
在初始化过程中,需要进行以下几个步骤:1. 设置时钟源:选择合适的时钟源以确保单片机的正常运行。
常见的时钟源包括晶振和外部时钟源。
2. 端口设置:配置各个IO引脚的输入输出状态。
例如,将某些引脚设置为输入模式以接收外部信号,将某些引脚设置为输出模式以控制外部设备。
3. 中断设置:根据需要启用或禁用中断功能。
中断可以在特定条件满足时打断程序的执行,执行一段特定的代码,然后返回到原来的程序流程中。
4. 定时器设置:配置定时器以实现定时和计数功能。
定时器可以用于生成精确的时间延迟或者计算特定事件的发生次数。
5. 其他模块设置:根据具体需求,配置其他功能模块,如ADC(模拟数字转换器)、UART(串行通信接口)等。
二、主循环初始化完成后,单片机程序进入主循环。
主循环是单片机程序的核心部分,包含了程序的主要逻辑。
在主循环中,程序会不断地执行以下几个步骤:1. 读取输入状态:通过读取各个IO引脚的状态,获取输入信号的信息。
可以使用条件语句(如if语句)来判断输入信号是否满足特定条件。
2. 执行操作:根据输入信号的状态,执行相应的操作。
可以使用控制语句(如for、while循环)来实现循环执行某段代码的功能。
3. 更新输出状态:根据前面的操作结果,更新各个IO引脚的输出状态。
这些输出信号可以用于控制外部设备,例如打开或关闭LED灯、驱动电机等。
4. 延时等待:在一些应用中,需要等待一段时间后再执行下一次循环。
C8051F系列单片机的初始化共5页文档
C8051F系列单片机的初始化Silicon Labs公司出品的C8051F系列单片机是高集成度的混合信号系统级(SoC)芯片,它具有基于增强的CIP-51内核,其指令集与MCS-51完全兼容,采用流水线结构,70%的指令执行时间为1到2个系统时钟周期,是标准8051指令执行速度的12倍,具有大量的中断源(可达22个),集成了丰富的资源和外部设备接口,能够满足绝大部分场合的复杂功能要求,在嵌入式领域的各个场合都得到了广泛的应用。
1、初始化的基本流程C8051F系列单片机系统时钟源多样且控制灵活,采用交叉开关配置方式实现了I/O端口的灵活配置,内部特殊功能寄存器SFR种类数量多且采用分页管理方式,因为这些特点C8051F系列单片机的初始化工作不同于标准8051单片机,其初始化工作流程基本如下:看门狗初始化配置→交叉开关初始化配置→I/O端口初始化配置→系统时钟初始化配置→功能模块初始化配置。
2、初始化的要点2.1 特殊功能寄存器(SFR)C8051F系列单片机具有标准8051中的全部SFR,还增加了一些用于配置和访问专有子系统的SFR,SFR采用分页机制,允许器件将很多SFR映射到0x80-0xFF存储器地址空间,最多可达256页。
在使用相应的特殊功能寄存器时,需先利用页选择寄存器(SFRPAGE)转换到相应的SFR页,再对其进行操作。
当中断发生时,SFR页寄存器会自动切换到引起中断的标志位所在页,这减轻了从中断服务程序切换SFR页的负担,在执行RETI指令时,中断前使用的SFR页会被自动恢复。
SFR结构如图1所示:2.2 可编程数字I/O和交叉开关C8051F系列单片机使用优先权交叉开关译码器实现了I/O端口的灵活配置,允许将内部系统资源映射到P0-P3的端口,用户根据自己的特定应用选择通用端口I/O和所需资源的组合。
优先权交叉开关译码器是通过交叉开关配置寄存器XBR0、XBR1、XBR2 和XBR3(复位后均为0)来进行配置的,当外设对应使能位被置为1时,外设可以通过端口进行访问,反之则不能。
自己写的C8051F020程序
P3IF &= 0x3f;
KeyCode = read_display();
Key_flag = 1;
}
void main(void)
{
unsigned int temp = 0;
WDTCN = 0xde;//关看门狗
WDTCN = 0xad;//在上一个写入后四个系统周期内写入有效
SYSCLK_Init();//初始化系统时钟
*函数名:void ADC1_init(void)
*功能:ADC1初始化(8位)
*输入:void
*返回:void
***************************************************************/
void ADC1_Init(void)
{
REF0CN = 0x03;//BIASE=1,允许内部偏压工作
Delay1us(200);Delay1us(200);
}
}
void Delay1s(uint i)
{
uchar j;
while(--i)
{
for(j=0; j<5; j++)
{
Delay1ms(200);
}
}
}
#endif //_DELAY_H_
#include <intrins.h>
#include <MATH.H>
unsigned char KeyCode;
bit Key_flag;
/**********************键盘中断***********************************/
void keyint_fun(void) interrupt 19
单片机C程序编译、执行过程
单片机C程序编译、执行过程1、编写C代码:1)预编译代码2)定义及声明变量3)定义及声明函数4)编写程序代码(主函数MAIN)2、编译器编译:1. 预处理此时编译器会扫描一个一个的C源文件,如果发现#include了某个.h文件,则把整个.h文件包含进.c 文件中,形成一个新的.c文件(实际的实现过程可能不是这样,但原理是这样的)。
同时进行相关预处理指令的解释工作,譬如将宏替换成实际的值。
2. 编译源文件此时编译器会扫描经过第1步之后新生成的源文件,把源代码编译成机器码,生成目标文件。
如果发现某个类型不是编译器自含的类型,如一些自定义的结构体等,那就会在源文件中查找这个类型,看看是否可以找到这个类型的声明,如果找不到,则报错。
所有的函数只会在编译时生成一个符号,不查找其实体是否存在。
不过如果发现在使用这个函数的代码行之前未能发现此函数的声明,编译器会给出警告:隐式的函数调用。
3. 链接所有的目标文件此时编译器就会收集所有目标文件中的符号,例如函数符号,并且查找其实体,如果找不到,则报错;无错的话会给这些符号分配真正的地址,分配了地址后,就会替换每个目标文件中的符号为实际地址,然后合并所有的目标文件为一个可执行文件。
3、编译后的二进制文件:1)编译后的二进制码,实际就是把C程序编译成了一句句二进制机器指令。
2)大概开始是告诉单片机,在RAM中分配外部变量、全局变量、静态变量等等工作。
3)然后就是将C程序代码编译成二进制机器指令。
(什么时候把什么地址的数取出来进行什么操作然后放在什么地址或寄存器,这些个事了)4)执行完RAM分配、为变量(全局变量和静态变量)开辟完空间的指令后,程序指针指到主函数main()处,继续向下一步一步移动,执行初始化机器指令。
5)遇到调用函数,就会有将主函数中函数调用后的下一条指令(函数调用语句的下一条可执行语句)的地址、函数的各个参数、函数中的局部变量等按照顺序进行压栈,然后程序指针跳转到要调用的函数入口地址处,执行函数内部机器代码,执行完成后按照顺序出栈处理,程序指针返回到函数调用后的下一条指令继续向下执行等机器代码。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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)开中断使能TI2、Time:(1)工作方式设定TMOD (2)定时器时钟基准CKCON (3)启动/停止TCON设定TRn3、Interrupt:(1)中断允许IE (2)触发方式设定(上下沿,电平)(3)对应控制位允许设定,如ES串口允许C8051F020单片机初始化程序; $INCLUDE (C8051F020.inc) /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; EIE2 ; EXTERNAL INTERRUPT ENABLE 2 ; IP ; INTERRUPT PRIORITY; EIP1 ; EXTERNAL INTERRUPT PRIORITY REGISTER 1 ; EIP2 ; EXTERNAL INTERRUPT PRIORITY REGISTER 2; P3IF ; PORT 3 EXTERNAL INTERRUPT FLAGS;■-- <6> --端口IO初始化及交叉开关设置; XBR0 ; DIGITAL CROSSBAR CONFIGURATION REGISTER 0 ; XBR1 ; DIGITAL CROSSBAR CONFIGURATION REGISTER 1 ; XBR2 ; DIGITAL CROSSBAR CONFIGURATION REGISTER 2 ; P0MDOUT ; PORT 0 OUTPUT MODE CONFIGURATION; P1MDOUT ; PORT 1 OUTPUT MODE CONFIGURATION; P2MDOUT ; PORT 2 OUTPUT MODE CONFIGURATION; P3MDOUT ; PORT 3 OUTPUT MODE CONFIGURATION; P74OUT ; PORTS 4 - 7 OUTPUT MODE;■-- <7> --外部RAM和片内XRAM; EMI0CN ; EXTERNAL MEMORY INTERFACE CONTROL; EMI0CF ; EXTERNAL MEMORY INTERFACE (EMIF) CONFIGURATION ; EMI0TC ; EXTERNAL MEMORY;■-- <8> --定时器设置; TMOD ; TIMER MODE; TCON ; TIMER CONTROL; T2CON ; TIMER 2 CONTROL; T4CON ; TIMER 4 CONTROL; TMR3CN ; TIMER 3 CONTROL; TMR3RLL ; TIMER 3 RELOAD REGISTER - LOW BYTE; TMR3RLH ; TIMER 3 RELOAD REGISTER - HIGH BYTE; TMR3L ; TIMER 3 - LOW BYTE; TMR3H ; TIMER 3 - HIGH BYTE;■-- <9> --串行通讯; SCON0 ; SERIAL PORT 0 CONTROL; SCON1 ; SERIAL PORT 1 CONTROL; SBUF1 ; SERAIL PORT 1 DATA; SADDR1 ; SERAIL PORT 1; PCON ; POWER CONTROL; RCAP2L ; TIMER 2 CAPTURE REGISTER - LOW BYTE; RCAP2H ; TIMER 2 CAPTURE REGISTER - HIGH BYTE; RCAP4L ; TIMER 4 CAPTURE REGISTER - LOW BYTE; RCAP4H ; TIMER 4 CAPTURE REGISTER - HIGH BYTE ; SADDR0 ; SERIAL PORT 0 SLAVE ADDRESS;■-- <10> --可编程计数器阵列; PCA0CN ; PCA 0 COUNTER CONTROL; PCA0MD ; PCA 0 COUNTER MODE; PCA0CPM0 ; CONTROL REGISTER FOR PCA 0 MODULE 0; PCA0CPM1 ; CONTROL REGISTER FOR PCA 0 MODULE 1; PCA0CPM2 ; CONTROL REGISTER FOR PCA 0 MODULE 2; PCA0CPM3 ; CONTROL REGISTER FOR PCA 0 MODULE 3 ; PCA0CPM4 ; CONTROL REGISTER FOR PCA 0 MODULE 4; SMB0CN ; SMBUS 0 CONTROL; SMB0CR ; SMBUS 0 CLOCK RATE; SMB0STA ; SMBUS 0 STATUS; SMB0DAT ; SMBUS 0 DATA; SMB0ADR ; SMBUS 0 SLAVE ADDRESS;■-- <12> --SPI总线通讯; SPI0CKR ; SERIAL PERIPHERAL INTERFACE 0 CLOCK RATE CONTROL ; SPI0DAT ; SERIAL PERIPHERAL INTERFACE 0 DATA ; SPI0CFG ; SERIAL PERIPHERAL INTERFACE 0 CONFIGURATION ; SPI0CN ; SERIAL PERIPHERAL INTERFACE 0 CONTROL;-- <13> --ADC转换; AMX0CF ; ADC 0 MUX CONFIGURATION; AMX0SL ; ADC 0 MUX CHANNEL SELECTION; ADC0CF ; ADC 0 CONFIGURATION; ADC0CN ; ADC 0 CONTROL; ADC0L ; ADC 0 DATA - LOW BYTE; ADC0H ; ADC 0 DATA - HIGH BYTE; ADC1CF ; ADC 1 ANALOG MUX CONFIGURATION; AMX1SL ; ADC 1 ANALOG MUX CHANNEL SELECT; ADC1CN ; ADC 1 CONTROL; ADC0GTL ; ADC 0 GREATER-THAN REGISTER - LOW BYTE; ADC0GTH ; ADC 0 GREATER-THAN REGISTER - HIGH BYTE ; ADC0LTL ; ADC 0 LESS-THAN REGISTER - LOW BYTE; ADC0LTH ; ADC 0 LESS-THAN REGISTER - HIGH BYTE ; REF0CN ; VOLTAGE REFERENCE 0 CONTROL; ADC1 ; ADC 1 DATA;■-- <14> --DAC转换; PCA0L ; PCA 0 TIMER - LOW BYTE; PCA0H ; PCA 0 TIMER - HIGH BYTE; DAC0CN ; DAC 0 CONTROL; DAC1L ; DAC 1 REGISTER - LOW BYTE; DAC1H ; DAC 1 REGISTER - HIGH BYTE; DAC1CN ; DAC 1 CONTROL; CPT0CN ; COMPARATOR 0 CONTROL; CPT1CN ; COMPARATOR 1 CONTROL; EMI0TC ; EMIF TIMING CONTROL;■-- <16> --时钟/电压基准设置; CKCON ; CLOCK CONTROL; SADEN1 ; SERIAL PORT 1 SLAVE ADDRESS MASK; SADEN0 ; SERIAL PORT 0 SLAVE ADDRESS MASK; P1MDIN ; PORT 1 INPUT MODE; PSW ; PROGRAM STATUS WORD; B ; B REGISTER; WDTCN ; WATCHDOG TIMER CONTROL;◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆;;====================================================================; function: Init_CTS 定时器/计数器,中断和串行通讯初始化子程序; input: -----------------; output: -----------------; usage: -----------------;====================================================================THS0 equ 0a8hTLS0 equ 09ah; THS1 equ 0fah;0feh;0fah;-4800;0f4h; TLS1 equ 0fah;0feh;0fah;-4800;0f4h;; THS2 equ 0ffh;0feh;0fah;-4800;0f4h; TLS2 equ 0b8h;0feh;0fah;-4800;0f4hInit_TCS: ;定时器/计数器,中断和串行通讯初始化子程序;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓; ◆◆◆8051内部控制寄存器◆◆◆;************************************************************************************;|名称| 代号 | 地址|位寻|B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 | ;|--------|------|------|----|-----|------|------|------|------|------|------|------|;|电源控制| PCON | 87H | NO |SMOD | -- | -- | -- | GF1 | GF0 | PD | IDL|;|--------|------|------|----|-----|------|------|------|------|------|------|------|;|计时控制| TCON | 88H | YE |TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0 | ;|--------|------|------|----|-----|------|------|------|------|------|------|------|;|计时模式| TMOD | 89H | NO |1GATE| 1C/T | 1M1 | 1M0 | 0GATE| 0C/T | 0M1 | 0M0 |;|--------|------|------|----|-----|------|------|------|------|------|------|------|;|串行控制| SCON | 98H | YE |SM0 | SM1 | SM2 | REN | TB8 | RB8 | TI | RI | ;|--------|------|------|----|-----|------|------|------|------|------|------|------|;|中断允许| IE | A8H | YE |EA | -- | ET2 | ES | ET1 | EX1 | ET0 |EX0 |;|--------|------|------|----|-----|------|------|------|------|------|------|------|;|中断优先| IP | B8H | YE |-- | -- | PT2 | PS | PT1 | PX1 | PT0 |PX0 |;************************************************************************************;时钟频率为:11.059200MHz;;机器周期为:12/fosc=1.085069μs;;CT0定时器设定延时为:2000μs;;CT0定时器工作于模式0;;CT0溢出处理采用中断方式;;CT0选择内部时钟;;CT0启动由TR0的0/1决定;;设定波特率为: 4800bps;;串口0工作于方式1--T1定时器工作于方式2;;串口1工作于模式3--T2定时器用于波特率发生器 4800bpsmov TH0, #THS0mov TL0, #TLS0; mov TH1, #THS1; mov TL1, #TLS1; mov TH2, #THS2; mov TL2, #TLS2;▲■-- <1> --电源管理;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓;87H---PCON-------电源控制寄存器;复位值: 00000000;位 7-2:保留。