lml198694的笔记 https://passport2.21ic.com/?522233 [收藏] [复制] [RSS] 本博客主要记录学习感悟与经验。欢迎各位的指点与交流啊!!!!!!!!

日志

c8051f330系列单片机串口调试程序

已有 2810 次阅读2008-7-4 09:26 |个人分类:51单片机|系统分类:单片机

最近看了一下c8051f330系列的单片机,主要是搞串口和AD转换部分.写了一个串口程序,程序代码如下:


#include<c8051f330.h>
#include<stdio.h>
typedef  unsigned char     uint8;
#define  SYSTEMCLOCK   24500000
#define  BAUDRATE      9600


/**************************************************
延时小程序。
**************************************************/
void  delay(uint8 count)
 { uint8 i;
   while(count--)
     for(i=0;i<125;i++);
 }
/****************************************************
波特率设置。
****************************************************/
void  daud_set(void)//设置系统频率为245000000。
{
 CLKSEL &=0Xfc;    //系统时钟选择寄存器。采用内部高频振荡器。
// OSCICL=0X00;  //无晶振补偿。
 OSCICN |=0X83;  //采用内部晶振。不分频。   //SSCISN|=0xc3;
  RSTSRC |=0X04;  //采用时钟丢失检测。
 }
/*****************************************************
串口设置。
*****************************************************/
void  uart0(void)
{
 SCON0=0X10;   //串口工作方式允许接受。8位数据传送。
 TH1=0X96;
 CKCON &=0XF4;
 TMOD &=~0XF0;
 TMOD |=0X20;//定时器采用1,工作方式为2,
 TR1=1;
 TI0=1;
 //IP=0X10;  //设置串口中断为高优先级。
// ES0=1;   //串口中断使能。
  
 }
void port_set(void)
{
 P0MDOUT   |= 0X10;  //将发送位设置为推挽输出。
 XBR0      = 0x01; //采用串口。
 XBR1      = 0x40; //交叉开关使能。


}
/*****************************************************
主函数。
*****************************************************/
void main(void)
{
 PCA0MD  &=~0X40;  //开门狗禁止。
 daud_set();    //波特率设置。
 port_set();    //P0口输入工作方式设置(采用推挽式)。
 uart0();
 EA=0;
 while(1)
 {
  SBUF0=0X30;
  while(TI0==0);
  TI0=0;
  delay(20);
 }
}


总体来说,对于c8051f330系列的单片机来说,系统配置是相当的重要.第一步就是系统时钟的选择,端口的配置,交叉开关的配置,串口的配置,定时器的配置,等等,只要能够根据自己的需要来配置系统,就可以象写AT系列的51一样.所以,学习这种单片机的主要学习重点应该是放在学习各种寄存器的配置上,掌握了配置,就可以开始写一些基本的程序了!


这个串口程序的主要思路是采用的查询式的方式来对串口来进行写的过程,通过对TI0的查询,等到发送完一个数据,在去发下一个数据.


采用系统时钟为内部高频振荡(24.5M),串口0,定时器1的振荡频率采用的是系统时钟的12分频.


路过

鸡蛋

鲜花

握手

雷人

发表评论 评论 (2 个评论)

回复 peng794 2008-8-9 11:17
C8051F330 这个单片机你用什么开发工具,开发环境,,怎么样烧写程序?????? 请教了,

QUOTE:
以下为lml198694的回复: 哦,这个的话,用keil就可以了,只要在你的安装文件中添加一个c8051f的文件就可以用了.至于烧程序的话,可以用采用新华龙的c8051f330的下载器,他支持再线调试.


QUOTE:
以下为lml198694的回复: 哦,这个的话,用keil就可以了,只要在你的安装文件中添加一个c8051f的文件就可以用了.至于烧程序的话,可以用采用新华龙的c8051f330的下载器,他支持再线调试.
xhwykzz2001 2009-4-10 02:47
我目前正在用C8051F530的片子 串口TX端检测发送数据没有问题 请问 如果我把单片机的TX端和RX端连接 同时测试发送和接收是否可行 SBUF0同时发送和接收,数据不会混乱吗? 调试程序应该怎样写? 谢谢