查看: 2066|回复: 11
|
求各大大帮助,有关css c compiler的问题
[复制链接]
|
|
上次求助有关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 编辑 ] |
|
|
|
|
|
|
|
发表于 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
|
显示全部楼层
|
|
|
|
|
|
|
发表于 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。
- setup_port_a( ALL_ANALOG );
- setup_adc( ADC_CLOCK_INTERNAL );
-
- // read channel 0
- set_adc_channel( 0 ); // set channel 0
- delay_us(10);
- value = Read_ADC();
- // read channel 1
- set_adc_channel( 1 ); // set channel 1
- delay_us(10);
- 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:
- x=getc();
-
- if (x=='1')
- {
- // do your code
- }
-
- if (x==49)
- {
- // do your code
- }
-
- if (x==0x31)
- {
- // do your code
- }
复制代码 |
|
|
|
|
|
|
|
楼主 |
发表于 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
- #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, errors)
- void main()
- {
- int value;
- int c;
- setup_port_a(ALL_ANALOG);
- setup_adc(ADC_CLOCK_INTERNAL);
-
-
- while(1)
- {
- if(kbhit()) // Check if there is RS232 data arrive
- {
- c=getc(); // Get one byte from RS232
- if(c=='A')
- {
- set_adc_channel(0);
- delay_us(10);
- value=Read_ADC();
- printf("%u",value);
- }
- if (c=='B')
- {
- set_adc_channel(1);
- delay_us(10);
- value=Read_ADC();
- printf("%u",value);
- }
- }
- }
- }
复制代码 |
|
|
|
|
|
|
|
发表于 3-10-2007 10:33 AM
|
显示全部楼层
请问css c compiler和microC 是一样的吗?
我没使用过pic,想学习和研究,如可以的话讲授我少许吧 ,谢谢。
我使用过8051吧了 |
|
|
|
|
|
|
|
发表于 3-10-2007 11:23 AM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 3-10-2007 11:31 AM
|
显示全部楼层
|
|
|
|
|
|
|
楼主 |
发表于 14-10-2007 12:11 AM
|
显示全部楼层
hi,多谢pic大大,我的project算是完成了,谢谢你之前的教导。希望这个帖可以帮到以后有需要得人 |
|
|
|
|
|
|
| |
本周最热论坛帖子
|