搜索
bottom↓
回复: 2

CC2430 ADCH,ADCL寄存器数值总是0x00?

[复制链接]

出0入0汤圆

发表于 2011-6-7 11:00:35 | 显示全部楼层 |阅读模式
贴出程序……
#define ENABLE_ALL_INTERRUPT() (IEN0 |= 0x80)
#define DISABLE_ALL_INTERRUPT() (IEN0 &= ~0x80)
#include"ioCC2430.h"
#define uchar unsigned char
#define uint unsigned int
#define BYTE unsigned char
#define BAUD_E(baud, clkDivPow) (     \
    (baud==2400)   ?  6  +clkDivPow : \
    (baud==4800)   ?  7  +clkDivPow : \
    (baud==9600)   ?  8  +clkDivPow : \
    (baud==14400)  ?  8  +clkDivPow : \
    (baud==19200)  ?  9  +clkDivPow : \
    (baud==28800)  ?  9  +clkDivPow : \
    (baud==38400)  ?  10 +clkDivPow : \
    (baud==57600)  ?  10 +clkDivPow : \
    (baud==76800)  ?  11 +clkDivPow : \
    (baud==115200) ?  11 +clkDivPow : \
    (baud==153600) ?  12 +clkDivPow : \
    (baud==230400) ?  12 +clkDivPow : \
    (baud==307200) ?  13 +clkDivPow : \
    0  )


#define BAUD_M(baud) (      \
    (baud==2400)   ?  59  : \
    (baud==4800)   ?  59  : \
    (baud==9600)   ?  59  : \
    (baud==14400)  ?  216 : \
    (baud==19200)  ?  59  : \
    (baud==28800)  ?  216 : \
    (baud==38400)  ?  59  : \
    (baud==57600)  ?  216 : \
    (baud==76800)  ?  59  : \
    (baud==115200) ?  216 : \
    (baud==153600) ?  59  : \
    (baud==230400) ?  216 : \
    (baud==307200) ?  59  : \
  0)
extern void UARTxISRopen(void);
extern void SET_UART0_ISR(void);
extern void initUART(void);
extern unsigned uarttemp;
main( void )
{
        uchar temp = 0;
        SLEEP &= ~0x04;
        while(!(SLEEP & 0x40)); //上电等待外晶振稳定                
        CLKCON &= ~0x47;                       
        SLEEP |= 0x04;
        initUART();
        UARTxISRopen();
     ENABLE_ALL_INTERRUPT();
     while(1)
     {uarttemp =1;}


}
/*
  实验说明:UART0,波特率115200bps,PC机向CC2430送字符串(以@字符结束),CC2430收到后返回该字符串
*/

#include <ioCC2430.h>

unsigned char recv_buf[100] = {0};
unsigned char recv_count = 0;


/*系统时钟初始化
-------------------------------------------------------*/
void xtal_init(void)
{
  SLEEP &= ~0x04;             //都上电
  while(!(SLEEP & 0x40));     //晶体振荡器开启且稳定
  CLKCON &= ~0x47;            //选择32MHz 晶体振荡器
  SLEEP |= 0x04;              //关掉不用的振荡器
}

/*UART0通信初始化
-------------------------------------------------------*/
void Uart0Init(unsigned char StopBits,unsigned char Parity)
{
   PERCFG&= ~0x01;                  //选择UART0为可选位置一,即RXD接P0.2,TXD接P0.3
   P0SEL |=  0x0C;                  //初始化UART0端口,设置P0.2与P0.3为外部设备IO口

   U0CSR = 0xC0;                    //设置为UART模式,并使能接收器

   U0BAUD.BAUD_M = 0xd8;
   U0GCR.BAUD_E= 0x0b;                     //设置UART0波特率为115200bps,至于为何是216和11,可查阅CC2430中文手册

   U0UCR |= StopBits|Parity;        //设置停止位与奇偶校验
}

/*UART0发送数据
-------------------------------------------------------*/
void  Uart0Send(unsigned char data)
{
  while(U0CSR&0x01);    //等待UART空闲时发送数据
  U0DBUF = data;
}

/*UART0发送字符串
-------------------------------------------------------*/
void Uart0SendString(unsigned char *s)
{
  while(*s != 0)         //依次发送字符串s中的每个字符
    Uart0Send(*s++);
}

/*UART0接受数据
-------------------------------------------------------*/
unsigned char Uart0Receive(void)
{
  unsigned char data;
  while(!(U0CSR&0x04)); //查询是否收到数据,否则继续等待
  data=U0DBUF;          //提取接收到的数据
  return data;
}

/*主函数
-------------------------------------------------------*/
void main(void)
{
  unsigned char i,b;

  xtal_init();

  Uart0Init(0x00,0x00);  //初始化UART0,设置1个停止位,无奇偶校验
  Uart0SendString("Please Input string ended with '@'!\r\n");

  recv_count = 0;

  while(1)
  {
    while(1)
    {
      b = Uart0Receive();              //UART
      if(b=='@')break;                 //若接收到'@',则跳出循环,输出字符串

      recv_buf[recv_count] = b;        //若不是'@',则继续向字符数组recv_buf[]添加字符
      recv_count++;
    }
    for(i=0; i<recv_count; i++)        //输出字符串
      Uart0Send(recv_buf);

    Uart0SendString("\n");
    recv_count =0;                     //重置
  }
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2011-6-7 11:01:30 | 显示全部楼层
在线等判断……谢谢个位大虾!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-18 23:26

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表