时钟
IO(输入、输出,如何配置)

IO

 
数字和模拟资源可以通过25个I/O 引脚(C805 1F3 2 0 ),每个端口引脚都可以被定义为 通用I/O(GPIO)或 0 模拟输入
所有端口I/O 都耐5V电压
端口I/O 单元可以被配置为漏极开路或推挽方式,口输出方式寄存器PnMDOUT 中设置,n =  0,1, 2, 3
P1MDOUT |= 0x0F;//0000  1111    置P1的0-3口为1即推挽输出方式
P2MDOUT |= 0x0C;//0000 1100 对应 P2.2、P2.3推挽输出
 
寄存器XBR0 和XBR1 用于为数字I/O 资源分配物理I/O 引脚
 
PnMDIN 选择所有端口引脚的输入方式(模拟或数字)
 
注意:为使端口P0、P1和P2. 0  ~  P2 .3 工作在标准端口I/O 输入/输出方式,交叉开关必
须被使能。当交叉开关被禁止时,端口输出驱动器被禁止。P2.4 ~  P2.7 和P3.0 总是作为标准
GPIO 使用
 
 XBR1 |= ( 1<<6 );

USB时钟
 
C8051F 320/ 1 有一个可编程内部振荡器、一个外部振荡器驱动电路和一个4 倍时钟乘法器
可以通过对OSCICN 和OSCICL 寄存器编程来使能/ 禁止内部振荡器和调节其输出频率(如图
13.1 所示)。系统时钟(SYSCLK )可以来自内部振荡器、外部振荡器电路或4 倍时钟乘法器
二分频。USB 时钟(USBCLK )可以来自内部振荡器、外部振荡器电路或4 倍时钟乘法器。
表13.3 给出了内部振荡器的电气特性
 
一旦内部振荡器的频率被修改,则它不能再被用作USB 时钟
4 倍时钟乘法器允许使用12 M Hz 振荡器产生全速USB 通信所需要的48MHz 时钟
用CLKMUL寄存器配置4 倍时钟乘法器。配置和使能4 倍时钟乘法器的步骤如下:
1 .通过向寄存器CLKMUL写0x00来复位时钟乘法器。
2 .用MULSEL位选择时钟乘法器的输入。
3 .用MULEN位使能时钟乘法器(CLKM UL | = 0x80 )。
4 .延时大于5 µs 。
5 .用MULINIT位初始化时钟乘法器(CLKMUL |  = 0 x C 0 )。
6 .查询等待MULRDY => ‘1 ’。
 
//都是一样的乘法寄存器配置
void Clock_Init( void )
{
     INT8U i;
     if( ( CLKMUL & ( 1<<5 ) ) ) return;//如乘法寄存器锁定,则返回
     CLKMUL = 0;
     CLKMUL |= ( 1<<7 );//时钟乘法器使能位
     for( i = 0; i < 250; i ++ );//延迟
     CLKMUL |= 0xC0;//1100 0000 ,初始化时钟乘法器
     for( i = 0; i < 250; i ++ );
     while( !( CLKMUL & ( 1<<5 ) ) );//时钟乘法器稳定后,MULRDY的读出值为‘1 ’
     CLKSEL = ( 2<<0 );
}

串口
 
void Port_Init (void)
{
   XBR1     = 0x40;                    // Enable crossbar and weak pullups
    XBR0      = 0x01;
     P0MDOUT |= 0x10;                    // Set TX pin to push-pull
}
 
void UART0_Init (void)
{
   SCON0 = 0x10;               // 0x0001 0000      8位UART  无  停止位的逻辑电平被忽略 UART0接收允许
                                    //    SCON0: 8-bit variable bit rate
                                       //        level of STOP bit is ignored
                                       //        RX enabled
                                       //        ninth bits are zeros
                                       //        clear RI0 and TI0 bits
//配置T1M 、SCA1:0
   if (SYSCLK/BAUDRATE/2/256 < 1) {
      TH1 = -(SYSCLK/BAUDRATE/2);
      CKCON |=  0x08;                  // T1M = 1; SCA1:0 = xx
   } else if (SYSCLK/BAUDRATE/2/256 < 4) {
      TH1 = -(SYSCLK/BAUDRATE/2/4);
      CKCON &= ~0x0B;                  // T1M = 0; SCA1:0 = 01
      CKCON |=  0x01;
   } else if (SYSCLK/BAUDRATE/2/256 < 12) {
      TH1 = -(SYSCLK/BAUDRATE/2/12);
      CKCON &= ~0x0B;                  // T1M = 0; SCA1:0 = 00
   } else if (SYSCLK/BAUDRATE/2/256 < 48) {
      TH1 = -(SYSCLK/BAUDRATE/2/48);
      CKCON &= ~0x0B;                  // T1M = 0; SCA1:0 = 10
      CKCON |=  0x02;
   } else {
      while (1);                       // Error.  Unsupported baud rate
   }

TL1 = TH1;                          // init Timer1
   TMOD &= ~0xf0;                      // TMOD: timer 1 in 8-bit autoreload
   TMOD |=  0x20;
   TR1 = 1;                            // START Timer1
   TI0 = 1;                            // Indicate TX0 ready
}


ADC
用配置器来配置:
ADC0CN = 0x02;                      // ADC0 disabled, normal tracking,
                                       // conversion triggered on TMR2 overflow ADC0用时钟2来触发
 
EIE1 |= 0x08;                       // enable ADC0 conversion complete int.中断配置
 
 
在ADCMUX设置那里选P2.4,和GND。引脚配置
AMX0P = 0x0C;                       // ADC0 positive input = P2.4
   AMX0N = 0x1F;                       // ADC0 negative input = GND
                                       // i.e., single ended mode
 
P2MDIN    = 0xEF;//P2.4设置为模拟输入,portinit处
 
还要串口配置和时钟2

I2C
void SMBus_Init(void);
void SMBus_ISR(void);

c8051f320学习,单片机不外乎时钟、IO、串口、USB等外设用法的更多相关文章

  1. 怎样以学习单片机为契机,逐步成为优秀的project师

    现状 不知道阅读本文的读者,在初学单片机时是否和我以前一样迷茫.看到各种新的术语,疑惑不解:不知道从何学起:照着书中的样例一步一步做都没有问题,可是自己试着做东西,遇到各种问题却不会解决,向别人提问, ...

  2. STM32学习笔记(二)——串口控制LED

    开发板芯片:STM32F407ZGT6 PA9-USART1_TX,PA10-USART1_RX; PF9-LED0,PF10-LED1; 一.串口1配置过程(不使用串口中断): 1.使能时钟,包括G ...

  3. STM32学习笔记(四)——串口控制LED(中断方式)

    目录: 一.时钟使能,包括GPIO的时钟和串口的时钟使能 二.设置引脚复用映射 三.GPIO的初始化配置,注意要设置为复用模式 四.串口参数初始化配置 五.中断分组和中断优先级配置 六.设置串口中断类 ...

  4. 51单片机GPIO口模拟串口通信

    51单片机GPIO口模拟串口通信 标签: bytetimer终端存储 2011-08-03 11:06 6387人阅读 评论(2) 收藏 举报 本文章已收录于:   分类: 深入C语言(20) 作者同 ...

  5. 单片机和Linux都想学_换个两全的方法学习单片机

    本节教你如何学习单片机,如何选择合适的开发板和开发工具. 现在我们知道单片机是要学习的,那么怎么去学习单片机?在上一课我们说不要使用老一套的方法学习,实际上是指的两个问题. 第一:选择什么开发板: 第 ...

  6. AVR单片机教程——数字IO寄存器

    前两篇教程中我们学习了LED.按键.开关的基本原理,数字输入输出的使用以及两者之间的关系.我们用到了 pin_mode . pin_read 和 pin_write 这三个函数,实际上它们离最底层(至 ...

  7. APUE学习笔记3_文件IO

    APUE学习笔记3_文件IO Unix中的文件IO函数主要包括以下几个:open().read().write().lseek().close()等.这类I/O函数也被称为不带缓冲的I/O,标准I/O ...

  8. PIC单片机之时钟设置

    PIC单片机之时钟设置 http://blog.csdn.net/superanters/article/details/8541650 内部时钟和外部时钟? PIC单片机有许多型号可以设置成 用外部 ...

  9. ROS 设置串口USB软连接

    原创:未经同意,请勿转载 我们在windows 通过USB连接串口,在设备串口中可以观测到COM0或者COMx.当我们插入不同的USB口时会显示不同的COM. 在UBUNTU下,ROS下接收串口信息时 ...

随机推荐

  1. 查看ORACLE的实际执行计划

    ORACLE的执行计划分为预估执行计划和实际执行计划.其中,你用Toad.PL/SQL Developer.SQL Developer.EXPLAIN PLAN FOR或者SET ATUOTRACE ...

  2. Java Security:Java加密框架(JCA)简要说明

    加密服务总是关联到一个特定的算法或类型,它既提供了密码操作(如Digital Signature或MessageDigest),生成或供应所需的加密材料(Key或Parameters)加密操作,也会以 ...

  3. linux screen 命令详解[转]

    一.背景 系统管理员经常需要SSH 或者telent 远程登录到Linux 服务器,经常运行一些需要很长时间才能完成的任务,比如系统备份.ftp 传输等等.通常情况下我们都是为每一个这样的任务开一个远 ...

  4. 今天说一下Top ~

    Top这个关键字,大家都不陌生~尤其是很多时候打开SSMS的时候右键表名,选择前1000行的时候,就可以见到编译出来的语句 Select top 1000 XXX from XXX 好~我们先看看To ...

  5. Navicat for MySQL 工具注册码

    在使用 MySQL 客户端中,感觉 Navicat for MySQL 做的还是很不错的.鄙人比较懒,喜欢采用绿色安装的方式,百度网盘上备份的有个绿色的压缩包,解压打开需要注册,这里记录一下注册码,版 ...

  6. addrinfo 结构

    typedef struct addrinfo {int             ai_flags;int            ai_family;int             ai_sockty ...

  7. 使用elasticsearch的关键技术点

    前言 最近有一个项目用到了搜索引擎,这里记录下使用过程中遇到的一些问题和解决方案. 0.准备工作 1)安装elasticsearch 2)安装Marvel 3)安装head tips:在es的配置文件 ...

  8. NOIP2015子串[序列DP]

    题目背景 无 题目描述 有两个仅包含小写英文字母的字符串 A 和 B.现在要从字符串 A 中取出 k 个互不重 叠的非空子串,然后把这 k 个子串按照其在字符串 A 中出现的顺序依次连接起来得到一 个 ...

  9. 第28章 行为型模式大PK

    27.1 策略模式 VS 命令模式 27.1.1 策略模式实现压缩算法 //行为型模式大PK——策略模式和命令模式 //实例:用策略模式实现压缩算法 #include <iostream> ...

  10. HTML:图片热点 网页划区 表单

    图片热点: 划出图片中的区域,做超链接,点击该区域就可以直接跳转到链接网站 <img src="../../../3.jpg" title="血精灵" u ...