c8051f_c8051f020 - CSDN
精华内容
参与话题
  • c8051f020单片机基本配置方法

    千次阅读 2019-04-18 09:41:46
    C8051F020 单片机系统时钟配置为外部晶体振荡器的二分频。记录相应配置寄存器的值。 I/O 口交叉开关配置。UART0、SPI0、/INT0 和 T1 分配端口引脚。将 P1.0、 P1.1 和 P1.2 配置为模拟输入。记录相应配置寄存器的值...

    一.实验目的:

    1.掌握优先权交叉开关译码器
    2.掌握I/O交叉开关设置和引脚设置
    3.掌握单片机内部和外部振荡器结构和配置方法
    二.实验要求

    1. C8051F020 单片机系统时钟配置为外部晶体振荡器的二分频。记录相应配置寄存器的值。
    2. I/O 口交叉开关配置。UART0、SPI0、/INT0 和 T1 分配端口引脚。将 P1.0、 P1.1 和 P1.2 配置为模拟输入。记录相应配置寄存器的值。
    3. 在 P2.0 输出一个矩形波(频率自选),用示波器观察波形,并记录信号频率幅度;改变系统时钟为内部振荡器 4MHz,再次记录信号频率和幅度。

    三.实验原理

    • C8051F 系列 MCU 振荡器每个 C8051F 系列 MCU 都有一个内部振荡器和一个外部振荡器驱动电路,每个驱动电路都能产生系统时钟,MCU 在复位后从内部振荡器启动。系统时钟可在内部振荡器和外部振荡器之间进行切换。也可以在选择内部振荡器时让外部振荡器保持在允许状态,这样可以避免在系统时钟被切换到外部振荡器时的启动延迟。外部振荡器具有很高的可配置性,为系统设置者提供了多种选择。时基信号可以从外部CMOS电平时钟源、晶体或陶瓷谐振器、RC 组合电路或外部电容获得。内部和外部振荡器的工作受两个 SFR 寄存器控制,即 OSCICN 内部振荡器控制寄存器和OSCXCN 外部振荡器控制寄存器。
    • C8051F020 交叉开关配置C8051F020单片机内部的数字和模拟资源可以通过P0~P3,32个I/O引脚使用。每个端口引脚都可以被定义为通用I/O(GPIO),又可以分配给一个数字外设或功能(例如:UART0 或/INT1),如图所示。其中P1口的引脚可以用做ADC1的模拟输入。设计者完全控制数字功能的引脚分配,只受I/O引脚数的限制。这种资源分配的灵活性是通过使用优先权交叉开关译码器实现的。
      端口 I/O 初始化包括以下步骤:
    1. 用端口输入方式寄存器(PnMDIN)选择所有端口引脚的输入方式(模拟或数字)。
    2. 用端口输出方式寄存器(PnMDOUT)选择所有端口引脚的输出方式(漏极开路或推挽)。
    3. 将引脚分配给要使用的外设。
    4. 使能交叉开关(XBARE = ‘1’)。

    四.实验代码

    #include"c8051f020.h"
    sbit wave=P2^0;
    void stay(unsigned int x)
    {
      unsigned int i,j;
      for(i=0;i<count;i++)
      for(j=0;j<=400;j++);
     }
     void main()
     {
       WDTCN=0xDE;
       WDTCN=0xAD;
       XBR0=0x06;//SPI0 UART0
       XBR1=0x0c;//INT0 T1
       XBR2=0x40;
       P1MDIN=0xF7;
       P2MDOUT=0xFF;
       OSCXCN=0xF7;
       stay(2);
       while(!(OSCXCN&0x80))
       {;}
       OSCICN=0x1d;//启用内部晶振
       //OSCICN=0x15;//启用外部晶振
       }
       while(1)
       {
         wave=!wave;
         stay(2);
        }
      }
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • c8051f 的IO配置方法及原则

    千次阅读 2012-05-03 16:28:12
    C8051F---I/0口 问:C8051F020/022的p4-p7口和p0-p3口有什么不同? 答:P0-P3口复位时为通用口,可通过Crossbar(数据交叉开关)寄存器按优先级设置成第二功能。而P4-P7口是通用口,另外P4-P7寄存器不能位寻址。 ...

    C8051F---I/0口

    问:C8051F020/022的p4-p7口和p0-p3口有什么不同?
    答:P0-P3口复位时为通用口,可通过Crossbar(数据交叉开关)寄存器按优先级设置成第二功能。而P4-P7口是通用口,另外P4-P7寄存器不能位寻址。
     
    问:如果通过Crossbar寄存器使能并分配为P0.0和P0.1引脚,那么,我还可以用这两个引脚为通用I/O吗?
    答:①如果你通过Crossbar使能一个外设,如UART,那么这个外设将控制这些引脚的输出状态(逻辑高/逻辑低)。
    你可以在任何时刻读引脚的状态,与Crossbar控制与否无关。
    当被禁止时,大部分外设的输出引脚被置为高阻态(UART口是一个很好的例子)。因为UART收发器无明确的禁止态,你可将相应的引脚置成开漏输出模式,也可以达到相同的结果,因为UART收发器在空闲时引脚为逻辑1。
    总的来说
    ,Crossbar置配后在末使用时的外设引脚可以用于数据输入,但不能作为数据输出。其它器件,如F3xx系列,口引脚可通过Crossbar“重新声明”且用于GPIO引脚对器件管脚无影响,因为这些器件具有“引脚跳过”(PIN SKIP)特性。
     
    :IO口的开漏和推挽输出如何使用?
    答:将端口引脚置成推挽输出方式,这将使能端口引脚驱动器。总体上来讲,数据输入端口引脚置成开漏方式、数据输出端口引脚置成推挽方式。当引脚用于输出连接上拉电阻(也就是说当与5V系统接口时)时配置成开漏输出。
     
    问:引脚P1.4~P1.7中断如何使用?
    答:如果外部中断(EX4-EX7)使能且相应的引脚P1.4~P1.7变低(可以是外部输入信号、写输出端口锁存或是Crossbar定义的外设启动的事件)。那么中断标志(PRT1IF.n)将置位,如果全局中断使能,将产生一个中断。中断逻辑检测本身的逻辑状态,与产生逻辑状态变化的原因无关。
     
    问:是不是所有的C8051F系列单片机的I/O口都是5V兼容?
    答:不是,例如C8051F060只有P0口是5V兼容,具体的要参照相关型号的数据手册。
     
    问:P4口的某些引脚已用为外部存储器的控制信号,剩下的口线能否作为普通I/O使用?
    答:可以,但不能直接给此端口送数,应通过“与”或者“或”的方式来对此端口进行操作。
     
    问:为什么端口的数据寄存器置为0时,其引脚上的电平还是为高电平?
    答:交叉开关使能位没有置位。
     
    问:端口在停机(STOP)模式下是什么状态?
    答:端口在停机模式下将保持进入停机模式前的状态。


    展开全文
  • C8051F340串口通信程序(UART0)

    千次阅读 2011-03-10 14:11:00
        UART0 是一个异步、全双工串口,它提供标准 8051 串行口的方式 1 和方式 3。UART0 具有增强的波特率发生器电路,有多个时钟源可用于产生标准波特率(详见“18.1 增强波特 率发生...

     

     

    UART0 是一个异步、全双工串口,它提供标准 8051 串行口的方式 1 和方式 3。UART0
    具有增强的波特率发生器电路,有多个时钟源可用于产生标准波特率(详见“18.1 增强波特
    率发生器”)。接收数据缓冲机制允许 UART0 在软件尚未读取前一个数据字节的情况下开始接
    收第二个输入数据字节。
    UART0 有两个相关的特殊功能寄存器:串行控制寄存器(SCON0)和串行数据缓冲器
    (SBUF0)。用同一个 SBUF0 地址可以访问发送寄存器和接收寄存器。写 SBUF0时自动访问
    发送寄存器;读 SBUF0时自动访问接收寄存器,不可能从发送数据寄存器中读数据。
    如果 UART0 中断被允许,则每次发送完成(SCON0 中的 TI0 位被置‘1’)或接收到数
    据字节(SCON0 中的 RI0 位被置‘1’)时将产生中断。当 CPU转向中断服务程序时硬件不清
    除 UART0 中断标志。中断标志必须用软件清除,这就允许软件查询 UART0 中断的原因(发
    送完成或接收完成)。

     

     

    Where T1CLK is the frequency of the clock supplied to Timer 1, and T1H is the high byte of Timer 1 (reload value).

    eg:

    设定的UARTBaudRate=9600bps

    T1CLK =48Mhz/12=4Mhz

    T1H=X

    计算出X,就是reload value

    9600=4*10^6/(256-X)/2

    X=47.666666666666666666666666666667

    X≈48=0x30

    T1H=0x30 (如下表倒数第二行0x30,波特率误差为0.16%,UART通讯的波特率的误差范围一般控制在2%以内,当然也要看你的硬件设计情况,不过对于9600BIT的低速率是比较容易的)









    void UART0_Init()
    {
    Timer1_Init();

    /*
    TI0 (SCON0.1) The TI0 Transmit Interrupt Flag
    RI0 (SCON0.0) Receive Interrupt Flag.
    ###the data byte will be loaded into the SBUF0 receive register
    if the following conditions are met:RI0 must be logic 0,
    REN0(SCON0.4)REN0 Receive Enable bit

    */
    SCON0 = 0x10;//UART0 Receive Enable.UART0 reception enabled.
    Interrupts_Init();

    }
    void UART0_Send_data(unsigned char Send_data)
    {
    SBUF0=Send_data;
    while(!TI0);
    TI0=0;
    }
    void UART0_Send_Longdata(unsigned char *str, unsigned int Stringlen)
    {
    unsigned int i;
    do {
    UART0_Send_data(*(str+i));
    i++;
    }
    while (i<Stringlen);

    }
    /*********************The main entry**********************/
    void main( )// http://hi.baidu.com/helloelectron
    {

    PCA0MD &= ~( 1<<6 );//C8051F关闭看门狗
    Oscillator_Init();
    Port_IO_Init();
    UART0_Init();
    UART0_Send_Longdata(MyBlog,strlen(MyBlog)); //发送BLOG字符串
    while(1)
    {

    if (read_flag) //如果接收完毕标志已置位,就将读到的数从串口发出
    {
    read_flag= 0 ; //接收完毕标志清0

    UART0_Send_data(Byte); //发送接收到的字符
    }
    display_led(Byte);
    }

    }

    void Uart0_Receive_interrupt()interrupt 4
    {
    if (RI0==1)
    {
    RI0 = 0; // 清接收中断标志RI0
    Byte = SBUF0; // 从串口接收一个字符
    read_flag= 1 ; //就置位取数标志
    }

     

    }

    展开全文
  • 学习c8051F系列单片机你应该知道的程序(经典例子集合) ======================================================== 1 keil c 快速入门 12can 13SMBUS 14SPI 15UART0 16UART1 17 Timers 18 PCA 19 lcd 20单片机...
  • C8051F环境搭建

    千次阅读 2017-08-05 11:55:59
    U-EC6: 支持JTAG模式、C2模式 JTAG接口定义: 适用型号C8051F00x C8051F01x C8051F02x C8051F04x C8051F06x C8051F12x C8051F2XxC2接口定义: 适用型号C8051F3xx C8051F41x C8051F5xx C8051F7xx C8051F8x

    https://www.silabs.com/

    USB调试器
    U-EC6:
    支持JTAG模式、C2模式
    U-EC6
    JTAG接口定义:
    适用型号C8051F00x C8051F01x C8051F02x C8051F04x C8051F06x C8051F12x C8051F2Xx

    JTAG

    C2接口定义:
    适用型号C8051F3xx C8051F41x C8051F5xx C8051F7xx C8051F8xx C8051F9xx

    C2

    U-EC6中文下载程序
    http://download.csdn.net/download/zhangxuechao_/9907964

    U-EC6

    官方下载程序
    http://download.csdn.net/download/zhangxuechao_/9907967
    点击connect,自动识别芯片编号

    1

    2

    配置工具
    http://download.csdn.net/download/zhangxuechao_/9907985
    配置工具

    配置工具

    配置工具

    Keil调试驱动
    http://download.csdn.net/download/zhangxuechao_/9907995
    U-EC6和Keil的无缝连接

    Keil调试驱动

    展开全文
  • C8051F全系列代码例程

    2020-07-28 23:32:42
    目前C8051F系列单片机最全最完整的程序例程,包含了各个型号单片机的驱动程序,代码稍加修改就可以使用,是参考学习的好东东
  • c8051f040单片机的全部详细例程c程序,涵盖所有功能。。而且还有详细的程序讲解。
  • 8051单片机的C语言编程

    千次阅读 2018-06-10 16:58:43
    8051C语言编程和传统的C语言编程是类似的。当然其中有些数据类型是不一样的,我们知道8051支持强大的位寻址能力,因此8051C语言编程增加了一些新的数据类型,为了不使的8051的能力被浪费。下面给出新增的数据...
  • C语言的float类型

    千次阅读 2017-12-10 16:14:55
    C语言float类型 浮点型变量是由有限的存储单元组成 因此,只能提供有限的有效数字,在有效位以外的数字将不精确,这样,可能会产生一些误差比如 将3.141592612赋值,给一个float类型变量 它只能保证前7位,是...
  • 单片机的型号是C8051F340,然后ram为4096,是一个U盘上的芯片. 我在原有的程序上增加了一个C文件,这个文件的功能是AES加密。 这时候,问题来了,我即使不调用这个加密功能,仅仅是添加这个文件,生成的程序 烧到这...
  • Error: 'C:\Keil\C51\BIN\SiC8051F.dll' not found 解决办法 将C:\Keil\UV3文件加下的两个文件USBHID.dll、uv3.cdb拷贝到C:\Keil\UV4下
  • keil C51 uv4调试c8051f单片机,提示缺少c8051f.dll文件,无法连接仿真器
  • JTAG/C2 接口定义

    千次阅读 2016-11-15 11:35:47
    JTAG/C2 接口定义 ...JTAG接口如下:(适用型号C8051F00x C8051F01x C8051F02x C8051F04x C8051F06x C8051F12x C8051F2Xx) 端口号 JTAG接口 备注 1 -   2 GND   3 GND  
  • C8051F系列单片机开发与C语言编程》PDF书籍+光盘程序
  • [C8051F320]完全在Keil下进行C8051

    千次阅读 2015-07-11 00:15:55
    IDE下进行C8051Fxx单片机程序开发以及在Keil下编程调试,然后将生成的hex文件用Silicon的Flash Program烧写到单片机中这两种方式的尝试,但感觉都不是很方便,Silicon的IDE使用起来不如Keil的界面以及功能好用,许多...
  • MCU8051IDE学习1

    千次阅读 2016-09-08 09:17:22
    安装可以直接下载安装包进行安装,他会将用到的所有...sudo apt-get install -f 下载工具gSTCISP可以自己下载安装 开源软件mcu8051ide是一款功能强大的51单片机集成开发软件,这个IDE包含模拟器,源代码编辑器,汇编,H
  • 如题。c8051f340自带usb,是不是只要自己做一个usb母头就可以直接连接到pc了?请高手出山详解~
  • c8051f340例程

    热门讨论 2020-07-30 23:30:59
    内含C8051F340几乎所有模块的例程,如PWM,I2C,AD,TCPIP,USB……
  • C8051F120单片机双串口配置(uart0,uart1)

    千次阅读 2017-07-11 09:26:19
    1.介绍IO配置及XBR配置 XBR0=0X40;//使能串口0 分配到IO口P0.0 P0.1 XBR1=0; XBR2=0X44;//使能XBR交叉开关IO控制器 使能串口1并绑定到IO口上 这里串口0 TX,RX优先级最高:P0.0,P0.1 之后仅使能了串口1那么串口1 ...
  • C8051F340的USBXpress开发包USB通信设计

    千次阅读 2012-09-13 16:14:34
    传统的USB设备驱动程序编写异常复杂,程序员往往很难入手。SILICON Laboratories公司提供的USBXpress开发包大大简化了USB通信的应用和相关驱动程序的开发,只要做好开发前的准备工作,USBXpress开发包完全可以实现...
1 2 3 4 5 ... 20
收藏数 4,257
精华内容 1,702
关键字:

c8051f