佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1994|回复: 11

求各大大帮助,有关css c compiler的问题

[复制链接]
发表于 5-8-2007 12:50 PM | 显示全部楼层 |阅读模式
上次求助有关pic16f877A的adc问题,多谢pic大大的帮助,参考旧帖,找到相关的资料

http://chinese.cari.com.my/myforum/viewthread.php?tid=704502&extra=page%3D9

// The very basic code to read ADC value and put in RS232 (1 byte)
#include <16F877.h>
#device ADC=8 //configure 8bit for ADC
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000) // Use 20Mhz clock
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)

void main()
{
   int value;
   setup_port_a( ALL_ANALOG ); // Configure PortA as Analog port
   setup_adc( ADC_CLOCK_INTERNAL );
   set_adc_channel( 0 ); // Set channel 0

   while(1)
   {
      value = Read_ADC(); // Get ADC
      printf("%u",value);  // send to PC in ASCII mode(0-255)
      delay_ms(1000); // Delay 1sec
   }   
}


这是我project所要的,但因为第一次使用ccsc compiler,compile后没有error,但不知道怎样convert去hex file....
我参考过help file,也不知道怎样使用,只知道做出c cource file.有没有任何ccs c compiler的教学?还有怎样convert去hex file?
谢谢各位大大

[ 本帖最后由 retnuoc 于 5-8-2007 12:52 PM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

发表于 5-8-2007 01:02 PM | 显示全部楼层
原帖由 retnuoc 于 5-8-2007 12:50 PM 发表
上次求助有关pic16f877A的adc问题,多谢pic大大的帮助,参考旧帖,找到相关的资料

http://chinese.cari.com.my/myforum/viewthread.php?tid=704502&extra=page%3D9



这是我project所要的,但因为第一次 ...

compile 后, hex file是自动产生。和你的C file在同一个Folder 里。
回复

使用道具 举报

 楼主| 发表于 9-8-2007 06:21 PM | 显示全部楼层
原帖由 pic 于 5-8-2007 01:02 PM 发表
compile 后, hex file是自动产生。和你的C file在同一个Folder 里。


多谢pic大大的帮忙,经过一番尝试后,现在已经能稍微掌握ccs c compiler了。
我成功compile乐pic大大所提供的code和测试。电脑能够receive到rs232所transmit的data了(ASCII, 0-255)

现在有个问题想请问pic大大,16F877A build in的ADC是不是能support多过一个channel的analog input的?如果享用A0&A1做analog input,c里面是不是酱setup的?

set_adc_channel(0)
set_adc_channel(1)

但是read方面好好象是不能用

read_adc(0) & read_adc(1)???

如果是酱的,请问要用什么方法才能用两个adc?
希望各位大大能给小弟一些建议 谢谢
回复

使用道具 举报

发表于 9-8-2007 10:24 PM | 显示全部楼层

回复 #3 retnuoc 的帖子

原帖由 retnuoc 于 9-8-2007 06:21 PM 发表
现在有个问题想请问pic大大,16F877A build in的ADC是不是能support多过一个channel的analog input的?如果享用A0&A1做analog input,c里面是不是酱setup的?

set_adc_channel(0)
set_adc_channel(1)

但是read方面好好象是不能用

read_adc(0) & read_adc(1)???

如果是酱的,请问要用什么方法才能用两个adc?
希望各位大大能给小弟一些建议 谢谢


不能同时,你要multiplex 它, switch来switch去, 要等10uS, 让它Stable。

  1. setup_port_a( ALL_ANALOG );
  2. setup_adc( ADC_CLOCK_INTERNAL );
  3.   
  4. // read channel 0
  5. set_adc_channel( 0 );    // set channel 0
  6. delay_us(10);
  7. value = Read_ADC();

  8. // read channel 1
  9. set_adc_channel( 1 );    // set channel 1
  10. delay_us(10);
  11. value = Read_ADC();
复制代码
回复

使用道具 举报

 楼主| 发表于 13-8-2007 06:25 PM | 显示全部楼层
多谢pic大大的帮忙,已经可以读取两个analog input的value了。迟点会尝试在hyperterminal输入input,mcu才transfer output,
请问如果要读取character是用 getc() 对不对?
如果是要读取数字应该使用什么?
回复

使用道具 举报

发表于 14-8-2007 09:26 AM | 显示全部楼层
原帖由 retnuoc 于 13-8-2007 06:25 PM 发表
多谢pic大大的帮忙,已经可以读取两个analog input的value了。迟点会尝试在hyperterminal输入input,mcu才transfer output,
请问如果要读取character是用 getc() 对不对?
如果是要读取数字应该使用什么?

一样, 都是用Getc()。
但是注意, 你得到的是ASCII value, 如你在Hyperterminal 打"1", 你在Getc()是得到 49 (0x31).

e.g:


  1. x=getc();

  2. if (x=='1')
  3. {
  4. // do your code
  5. }

  6. if (x==49)
  7. {
  8. // do your code
  9. }

  10. if (x==0x31)
  11. {
  12. // do your code
  13. }
复制代码
回复

使用道具 举报

Follow Us
 楼主| 发表于 2-10-2007 11:16 PM | 显示全部楼层
hi,pic大大,请问下
我的code有没有问题?

#include<16F877A.h>
#device ADC=8
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use rs232(baud=9600,xmit=PIN_C6,rcv=PIN_C7)

void main()
{
   int value;
   setup_port_a(ALL_ANALOG);
   setup_adc(ADC_CLOCK_INTERNAL);
   
   while(1)
   {
      if(getc()=='A')
      {
         set_adc_channel(0);
         delay_us(10);
         value=Read_ADC();
         printf("%u",value);
      }
      else if (getc()=='B')
      {
         set_adc_channel(1);
         delay_us(10);
         value=Read_ADC();
         printf("%u",value);
      }
   }
}

我再hyperterminal type A&B 时没有反应,还是要:

#include<16F877A.h>
#device ADC=8
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use rs232(baud=9600,xmit=PIN_C6,rcv=PIN_C7)

void main()
{
   int value;
   setup_port_a(ALL_ANALOG);
   setup_adc(ADC_CLOCK_INTERNAL);
   
   while(1)
   {
     
         set_adc_channel(0);
         delay_us(10);
      if(getc()=='A')
      {
         value=Read_ADC();
         printf("%u",value);
      }
     
         set_adc_channel(1);
         delay_us(10);
      if(getc()=='B'
      {
         value=Read_ADC();
         printf("%u",value);
      }
   }
}

还有再hyperterminal type A,B 时,需要shift+a or shift+b?
谢谢
回复

使用道具 举报

发表于 3-10-2007 09:38 AM | 显示全部楼层
原帖由 retnuoc 于 2-10-2007 11:16 PM 发表
hi,pic大大,请问下
我的code有没有问题?

有问题...

1. 你要用
if(kbhit())


}

2. c=getc();


关于以上的command 用法,请看CCS Help


  1. #include<16F877A.h>
  2. #device ADC=8
  3. #fuses HS,NOWDT,NOPROTECT,NOLVP
  4. #use delay(clock=20000000)
  5. #use rs232(baud=9600,xmit=PIN_C6,rcv=PIN_C7, errors)
  6. void main()
  7. {
  8.    int value;
  9.    int c;
  10.    setup_port_a(ALL_ANALOG);
  11.    setup_adc(ADC_CLOCK_INTERNAL);
  12.    
  13.    
  14.    while(1)
  15.    {
  16.       if(kbhit()) // Check if there is RS232 data arrive
  17.       {
  18.          c=getc(); // Get one byte from RS232
  19.          if(c=='A')
  20.          {
  21.             set_adc_channel(0);
  22.             delay_us(10);
  23.             value=Read_ADC();
  24.             printf("%u",value);
  25.          }
  26.          if (c=='B')
  27.          {
  28.             set_adc_channel(1);
  29.             delay_us(10);
  30.             value=Read_ADC();
  31.             printf("%u",value);
  32.          }
  33.       }
  34.    }
  35. }
复制代码
回复

使用道具 举报


ADVERTISEMENT

发表于 3-10-2007 10:33 AM | 显示全部楼层
请问css c compiler和microC 是一样的吗?
我没使用过pic,想学习和研究,如可以的话讲授我少许吧 ,谢谢。
我使用过8051吧了
回复

使用道具 举报

发表于 3-10-2007 11:23 AM | 显示全部楼层
原帖由 yes1010 于 3-10-2007 10:33 AM 发表
请问css c compiler和microC 是一样的吗?

不完全一样。。。。CCS 有build-in function, micro C也有他自己的Build in function, syntax 不一样。。。

我没使用过pic,想学习和研究,如可以的话讲授我少许吧 ,谢谢。

看旧帖学习。

我使用过8051吧了

过时了,不要用8051了。。。
回复

使用道具 举报

发表于 3-10-2007 11:31 AM | 显示全部楼层
等我会pic后就不用8051了,12machine cycle ,1 machine cycle的很贵
看了pic后,发现很powerful! 有adc, pwm!利害!
回复

使用道具 举报

 楼主| 发表于 14-10-2007 12:11 AM | 显示全部楼层
hi,多谢pic大大,我的project算是完成了,谢谢你之前的教导。希望这个帖可以帮到以后有需要得人
回复

使用道具 举报

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

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 3-6-2024 12:05 AM , Processed in 0.068050 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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