时钟
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. 数据表格,查询、导出共用一个form表单,实现文件流方式下载

    在开发中遇到问题是这样的: 在维护老的管理系统的过程中,老板说让加导出功能:项目中,查询的筛选条件是用的表单提交的方式写的. 解决方案有两种: 一.用ajax方式导出 var array = $('# ...

  2. GlassFish: 001 安装、启动

    安装 在GlassFish项目的首页就可以找到如何安装: https://glassfish.java.net/download.html#gfoseTab 上面给出了5个步骤:0,1,2,3,4 第 ...

  3. Thrift 跨服务开发框架

    Thrift概述 Thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发.它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP,Ruby, Erla ...

  4. 编写Java应用程序。首先,定义一个时钟类——Clock,它包括三个int型 成员变量分别表示时、分、秒,一个构造方法用于对三个成员变量(时、分、秒) 进行初始化,还有一个成员方法show()用于显示时钟对象的时间。其次,再定义 一个主类——TestClass,在主类的main方法中创建多个时钟类的对象,使用这 些对象调用方法show()来显示时钟的时间。

    package com.hanqi.test; public class Clock { int hh; int mm; int ss; String time; Clock(int h,int m, ...

  5. 【转】RHadoop实践系列之二:RHadoop安装与使用

    RHadoop实践系列之二:RHadoop安装与使用 RHadoop实践系列文章,包含了R语言与Hadoop结合进行海量数据分析.Hadoop主要用来存储海量数据,R语言完成MapReduce 算法, ...

  6. Eclipse 工程Clear与build的作用

    由于eclipse的编译是基于时间戳的判断机制的.因此当你按build all的时候有些eclipse认为时间戳没有改变的类不会被编译.因此你可以先clean一下再编译.这个时候eclipse会将所有 ...

  7. Mysql 如何实现列值的合并

    Mysql 如何实现列值的合并 SELECT  GROUP_CONCAT(name SEPARATOR ' ') AS name FROM A

  8. 使用TCMalloc的堆栈检查

    在前一篇译文<TCMalloc:线程缓冲的Malloc>详细讲解了TCMalloc的工作原理和特点,今天翻译<heap-checking using tcmalloc>,了解T ...

  9. .NET对象的内存布局

    每个虚拟机都有它自己的对象布局,本文我们将针对sscli源码和windbg调试器来查看不同类型的.net对象布局. 在.net虚拟机里,每个对象都需要保存这些信息: 对象的类型: 对象实例的成员属性( ...

  10. 带权图的最短路径算法(Dijkstra)实现

    一,介绍 本文实现带权图的最短路径算法.给定图中一个顶点,求解该顶点到图中所有其他顶点的最短路径 以及 最短路径的长度.在决定写这篇文章之前,在网上找了很多关于Dijkstra算法实现,但大部分是不带 ...