3197|3

86

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

请花三分钟帮我看看我的程序,谢谢! [复制链接]

我自己编的一个小程序,将AD转换后的数据采到片内XRAM,LED亮表示数据采集完成.但运行总是有问题,请各位大侠花点时间帮我看看,谢谢指教.谢谢!

#include
sfr16 ADC0     = 0xBE;                 

#define SYSCLK 22118400                  

#define NUM_SAMPLES        100         
sbit LED = P1^6;                          

void SYSCLK_Init (void);
void PORT_Init (void);
void ADC0_Init (void);
void EMIF_Init (void);


void SYSCLK_Init (void)
{

   char old_SFRPAGE = SFRPAGE;
   int i;                                 

   SFRPAGE = CONFIG_PAGE;              

   OSCXCN = 0x67;                     
                                       

   for (i=0; i <5000; i++) ;           

   while (!(OSCXCN & 0x80)) ;        

   RSTSRC = 0x04;                  

   CLKSEL = 0x01;                    

   OSCICN = 0x00;                     



   SFRPAGE = old_SFRPAGE;              
}



void ADC0_Init (void)
{
   char old_SFRPAGE = SFRPAGE;
   int i;

   SFRPAGE = ADC0_PAGE;               

   AMX0SL = 0x00;                     

   REF0CN = 0x03;                    

   for(i=0;i<10000;i++);               

   ADC0CF = (SYSCLK/25000000) << 4;   

   
   ADC0CN = 0xC0;                     
                                       
                                       
      
   SFRPAGE = old_SFRPAGE;            


   
}


void EMIF_Init (void)
{
   char SFRPAGE_SAVE = SFRPAGE;        

   SFRPAGE = EMI0_PAGE;               
   EMI0CF = 0x30;                     
                                       
   EMI0TC = 0x45;                     

   SFRPAGE = CONFIG_PAGE;
   P4MDOUT |= 0xFF;                    
   P5MDOUT |= 0xFF;                    
   P6MDOUT |= 0xFF;
   P7MDOUT |= 0xFF;

   SFRPAGE = SFRPAGE_SAVE;            
}

void PORT_Init (void)
{
char old_SFRPAGE = SFRPAGE;

   SFRPAGE = CONFIG_PAGE;              


   XBR2    = 0x40;                        
   P1MDOUT |= 0x40;                     

   SFRPAGE = old_SFRPAGE;            
}


void main (void)
  {

   unsigned int xdata  write_address0 = 0;
   unsigned int xdata  write_address1 = 1;
   int i;

   WDTCN = 0xde;                        
   WDTCN = 0xad;

   SYSCLK_Init ();                       

   PORT_Init ();

   EMIF_Init ();   

   ADC0_Init ();

   
   LED =0 ;

   SFRPAGE = ADC0_PAGE;
   for(i=0;i<100;i++)
     {
        AD0INT=0;
        AD0BUSY=1;
        while(AD0INT==0);
        if(AD0INT==1)
        {
            write_address0 = ADC0L;
            write_address1 = ADC0H;
            write_address0++;
            write_address1++;
            AD0INT=0;
        }

     }

   LED =1;
   
   while(1);

最新回复

改成   unsigned char xdata  write_address0[100] _at_ 0x0000;        unsigned char xdata  write_address1[100] _at_ 0x0200; 后就好使了,谢谢lbing,揭贴!!!  详情 回复 发表于 2007-6-18 18:42
点赞 关注

回复
举报

63

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
unsigned int xdata  write_address0 = 0;
   unsigned int xdata  write_address1 = 1;

不知道你的这两个是什么用意,呵呵

后面使用像是指针,但是却以变量在定义

请好好看一下C语言里的指针相关的章节

 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
谢谢楼上的热心解答,我想用write_address0和write_address1来表示片完XRAM用来存放AD转换数据的首地址.是不是改成
   unsigned int xdata * data write_address0 = 0;
   unsigned int xdata * data write_address1 = 1;
就行了?
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

4
 
改成   unsigned char xdata  write_address0[100] _at_ 0x0000;
       unsigned char xdata  write_address1[100] _at_ 0x0200;
后就好使了,谢谢lbing,揭贴!!!
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表