|
请问RS232能显示BREADBOARD上的资料吗?
[复制链接]
|
|

楼主 |
发表于 31-10-2011 09:28 PM
|
显示全部楼层
从楼主的发问, 感觉楼主对USART 没有基本概念。。
好好看:
电脑串行端口(serial port) 和单晶片通讯
pic 发表于 31-10-2011 04:46 PM 
可是
PIC16F877A
我不能INCLUDE<USART.H>
所以写的方式就不能更PIC18的方式一样了?对不?
谢谢。 |
|
|
|
|
|
|
|
发表于 31-10-2011 10:58 PM
|
显示全部楼层
可是
PIC16F877A
我不能INCLUDE
所以写的方式就不能更PIC18的方式一样了?对不?
谢谢。
pikachew 发表于 31-10-2011 09:28 PM 
你如果是用CCS C, 就用CCS C 的方式写。
你如果是用HiTech C, 就用HiTech C 的方式写。
不同的compiler 有不同的写法。
现在, 你的问题是在PIC MCU 的编程, 还是PC 那方面?
不要把拆问题来问, 再看看版规, 如果你是新的问题
你要人家帮你, 你要先让人家知道, 清楚你的问题。。。 |
|
|
|
|
|
|
|

楼主 |
发表于 1-11-2011 12:49 AM
|
显示全部楼层
你如果是用CCS C, 就用CCS C 的方式写。
你如果是用HiTech C, 就用HiTech C 的方式写。
不同的co ...
pic 发表于 31-10-2011 10:58 PM 
我要的是CCS C方式
资料是从电脑VB SEND 过来的
PIC16F877A里面的
我从头到尾的问题都是关于这个PROJECT的
所以我都发在同一个贴里。
刚刚试了这,这是用CCS来写的CODE
- char rec;
- if (rec=="A")
- {
- printf("I got it");
- delay_ms(2000);
- }
复制代码
还是不行。我在VB里写了
难到用CCS写的CODE错了?
谢谢。 |
|
|
|
|
|
|
|
发表于 1-11-2011 07:34 AM
|
显示全部楼层
本帖最后由 pic 于 1-11-2011 08:18 AM 编辑
我要的是CCS C方式
资料是从电脑VB SEND 过来的
PIC16F877A里面的
我从头到尾的问题都是关于这 ...
pikachew 发表于 1-11-2011 12:49 AM 
首先, 你要学会除错(debug)的技巧。
当一个电路不操作时, 你要知道问题在那里。
可以一次只是做一件事, 先看看电路是否能TX, 然后看看是能否能RX。
先检查是否能TX 很容易,比如在你的程序里不断的发送一些字串就可以了。
你也要先确认, 你的电路是对的, 你要有电平转换电路, 如MAX232 或 类似的。
最好, 你可以放你硬体的照片,你的电脑, 你的电线, 看看你是怎样弄的。。
然后, 先使用Hyperterminal, 测试 以下的sample code。
你应该要能够收, 能够发。
你一上电后, 你要在Hyperterminal 上看到字串 “This is a demo“
你如果可以看到”This is a demo“, 表示你的MCU 发送的部分是操作的, 如果你看不到, 请反复检查, 直到你得到预订的效果为止。
成功后, 你再用VB 发送
然后看看下面的电路, 接在Port B0 的LED 是否会亮灯, 灭灯。
然后你在报告成绩吧。。
- // Demo how to receive one chr from RS232
- // by : pic@cArI ( 1 Nov 2011 )
- #include "16f877A.h"
- #fuses HS,NoPROTECT,NoWDT,put,brownout
- #use delay(clock=4000000)
- #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7,ERRORS)
- char chr;
- void main()
- {
- printf("\n\rThis is a demo");
-
- while(1)
- {
- if(kbhit()) // check if there is a char ready to fetch
- {
- chr=getc(); // get one char from USART
- putc(chr); // here we echo the chr we received
-
- switch(chr) // here we check what chr we fetch
- {
- case '1': // we get a '1', turn on LED
- printf("\n\rThis is 1-On LED");
- output_High(pin_b0);
- break;
- case '2': // we get a '2', turn off LED
- printf("\n\rThis is 2-Off LED");
- output_low(pin_b0);
- break;
- }
- }
- }
- }
复制代码 |
|
|
|
|
|
|
|

楼主 |
发表于 1-11-2011 08:08 AM
|
显示全部楼层
放你完整的ccs c code。
pic 发表于 1-11-2011 07:34 AM 
比如说当VBSEND了"A"过来,然后这里就会printf(“I GOT A”)
谢谢。这是完整的CODE. |
|
|
|
|
|
|
|
发表于 1-11-2011 08:19 AM
|
显示全部楼层
比如说当VBSEND了"A"过来,然后这里就会printf(“I GOT A”)
谢谢。这是完整的CODE.
pikachew 发表于 1-11-2011 08:08 AM 
请看124楼 |
|
|
|
|
|
|
|
发表于 1-11-2011 08:42 AM
|
显示全部楼层
比如说当VBSEND了"A"过来,然后这里就会printf(“I GOT A”)
谢谢。这是完整的CODE.
pikachew 发表于 1-11-2011 08:08 AM 
你不要用VB 来测试, 先用Hyperterminal, 成功了你才用VB。。
但是, 问题是你会在什么时候送出‘A’?
我不知道你这样做的目的是什么, 但是如果你硬要的话, 你改成下面的code
if(input(pin_a0)==1)
{
if(kbhit) // 加入这个,如果没有这个, 你的MCU 会一直等PC 送data来
{
rec=getch();
}
output_low(pin_d7);
printf("\nPARKING LOT 1- OCCUPIED\r");
lcd_putc("\fPL1-occupied");
if (rec=="A")
{
rec=0; // 你需要reset, 不然会一直重复 ”I got it“
printf("I got it");
delay_ms(1000);
}
} |
|
|
|
|
|
|
|

楼主 |
发表于 1-11-2011 07:07 PM
|
显示全部楼层
首先, 你要学会除错(debug)的技巧。
当一个电路不操作时, 你要知道问题在那里。
可以一次只是做一件 ...
pic 发表于 1-11-2011 07:34 AM 
刚刚试了这CODE
电脑完全没有TRANSMIT到data 去PIC
用了,HYPERTERMINAL, REAL TERM,VB2010
试了
都不能。
不知道是什么问题。
谢谢。
[img] [/img]
我的max232IC 是跟这里的 |
|
|
|
|
|
|
|
发表于 1-11-2011 07:40 PM
|
显示全部楼层
回复 128# pikachew
如果你的DB9 cable pin2,pin3 不是交叉的话,就出错了。 |
|
|
|
|
|
|
|

楼主 |
发表于 1-11-2011 08:04 PM
|
显示全部楼层
回复 pikachew
如果你的DB9 cable pin2,pin3 不是交叉的话,就出错了。
wkloh 发表于 1-11-2011 07:40 PM 
就是说db9的PIN 2 和PIN3要交差?
谢谢。交差的意思是指CROSS? |
|
|
|
|
|
|
|
发表于 1-11-2011 10:53 PM
|
显示全部楼层
回复 130# pikachew
没错,一端DB9 pin2,pin3 cross。 |
|
|
|
|
|
|
|

楼主 |
发表于 1-11-2011 11:05 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 1-11-2011 11:50 PM
|
显示全部楼层
[/URL][/img]
青色---PIN5
蓝色----PIN3
黄色----PIN2
[/URL][/img]
变成这样?
可是这样 ...
pikachew 发表于 1-11-2011 11:05 PM 
改接成:
青色---PIN5
蓝色----PIN2
黄色----PIN3 |
|
|
|
|
|
|
|

楼主 |
发表于 2-11-2011 06:24 PM
|
显示全部楼层
首先, 你要学会除错(debug)的技巧。
当一个电路不操作时, 你要知道问题在那里。
可以一次只是做一件 ...
pic 发表于 1-11-2011 07:34 AM 
我试了这按“1”和“2”了
也完全没RESPOND.
于是,我就换了我自己的来试但也是不能。
- // Demo how to receive one chr from RS232
- // by : pic@cArI ( 1 Nov 2011 )
- #include "16f877A.h"
- #fuses HS,NoPROTECT,NoWDT,put,brownout
- #use delay(clock=4000000)
- #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7,ERRORS)
- char chr;
- void main()
- {
-
- printf("\n\rThis is a demo");
-
- while(1)
- {
- output_high(pin_d5);
-
- if(kbhit()) // check if there is a char ready to fetch
- {
- chr=getc(); // get one char from UART
- putc(chr); // here we echo the chr we received
-
- if (chr='q')
- {
- delay_ms(1000);
- printf("I got it");
- delay_ms(1000);
- output_high(pin_d5);
- output_high(pin_d6);
- output_high(pin_d7);
- break;
- }
- }
-
- }
- }
复制代码
难道FUSED: HS 需要换成XT??
WKLOH兄说所的交差,
我也试了也是不能。
交差了printf也显示不到
谢谢。 |
|
|
|
|
|
|
|
发表于 2-11-2011 07:46 PM
|
显示全部楼层
本帖最后由 pic 于 2-11-2011 07:47 PM 编辑
我试了这按“1”和“2”了
也完全没RESPOND.
于是,我就换了我自己的来试但也是不能。
难道FU ...
pikachew 发表于 2-11-2011 06:24 PM 
Fuse 要放XT , 如果是4Mhz
Fuse 要放HS , 如果是》4Mhz
我的code 模拟时是用20Mhz, 后来我看你是用4Mhz, 改去4Mhz后忘了改Fuse XT, 对不起。
- #include "16f877A.h"
- #fuses XT,NoPROTECT,NoWDT,put,brownout
- #use delay(clock=4000000)
- #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7,ERRORS)
-
- void main()
- {
- while(1)
- {
- output_high(pin_b0);
- putc('A');
- delay_ms(500);
- output_low(pin_b0);
- putc('B');
- delay_ms(500);
- }
- }
复制代码
你先运行上面的code 吧
用hyperterminal
你一定要在hyperterminal 看到ABABABABABABABABABABABABABABABABAB
然后接在port B0 的LED要按1Hz的速度闪。
看到了, 回来报告, 再告诉你下一步。
看不到, 请检查你的硬体,你的接线, 你的MAX232, 你的MCU, 直到你拿到上面的效果为止。
如果还是不可以, 请放你的硬体的图, 完整的,看到整个的, 还有特写的, 很想看你是怎样接的。 |
|
|
|
|
|
|
|

楼主 |
发表于 2-11-2011 11:25 PM
|
显示全部楼层
Fuse 要放XT , 如果是4Mhz
Fuse 要放HS , 如果是》4Mhz
我的code 模拟时是用20Mhz, 后来我看你是用4 ...
pic 发表于 2-11-2011 07:46 PM 
试了
这CODE完全没问题。

如果PUTC,PRINTF都可以走,但是为什么getc不能呢?
试了用了另外一个DB9 FEMAL PIN 和 RS232 USB TO SERIAL COVERTER
所以断定这两样东西没问题。 |
|
|
|
|
|
|
|
发表于 2-11-2011 11:59 PM
|
显示全部楼层
试了
这CODE完全没问题。
如果PUTC,PRINTF都可以走,但是为什么getc不能呢?
试了用了另外一个DB9 ...
pikachew 发表于 2-11-2011 11:25 PM 
现在试下面的code, 一样的, 还是用hyperterminal
和之前的code 一样, 你会看到LED 闪, 还有ABABABABABABABABABABABABABABAB
但是, 你可以试试在hyperterminal 打字。
你打“1”,要显示“2”
你打“2”,要显示“3”
你打“D”,要显示“E”
你打“c”,要显示“d”
总之是会显示下一个之母就是了。
然后回来报告。
- #include "16f877A.h"
- #fuses XT,NoPROTECT,NoWDT,put,brownout
- #use delay(clock=4000000)
- #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7,ERRORS)
- int chr;
- void main()
- {
- while(1)
- {
- if(kbhit())
- {
- chr=getc();
- putc(chr+1);
- }
- else
- {
- output_high(pin_b0);
- putc('A');
- delay_ms(500);
- output_low(pin_b0);
- putc('B');
- delay_ms(500);
- }
- }
- }
复制代码 |
|
|
|
|
|
|
|

楼主 |
发表于 3-11-2011 07:30 PM
|
显示全部楼层
现在试下面的code, 一样的, 还是用hyperterminal
和之前的code 一样, 你会看到LED 闪, 还有ABABAB ...
pic 发表于 2-11-2011 11:59 PM 
我试了(不是这CODE),SIMULATION可以跑到,但是用我的电脑跑和CIRCUIT走不到。我是用WIN XP的。
刚刚试了,同样的CIRCUIT和同样的CODING在朋友的电脑却可以跑到。他的是WIN7
难道不同VERSION得WINDOWS 也会受影响?
然后大大给我的这CODE,SIMULATION也是可以跑到。REAL CIRCUIT也是跑不到
初步怀疑是电脑WINDOWS的问题。
然后最后一个问题是,难道4MHZ CRYSTAL 就不能用9600的BAUD RATE?
我朋友告诉我如果用4 MHZ CRYSTAL OSCILLATION 就一定要用300 的BAUD RATE.
谢谢。 |
|
|
|
|
|
|
|
发表于 3-11-2011 11:25 PM
|
显示全部楼层
我试了(不是这CODE),SIMULATION可以跑到,但是用我的电脑跑和CIRCUIT走不到。我是用WIN XP的。
刚刚试了,同样的CIRCUIT和同样的CODING在朋友的电脑却可以跑到。他的是WIN7
难道不同VERSION得WINDOWS 也会受影响?
pikachew 发表于 3-11-2011 07:30 PM
Win98, WinME, WinXP, Win Vista,Win7 都可以跑。
然后大大给我的这CODE,SIMULATION也是可以跑到。REAL CIRCUIT也是跑不到
初步怀疑是电脑WINDOWS的问题。
是你的电路, 不是Windows。
请问: 你有用Hyperterminal 吗?
你的电路的照片呢?
然后最后一个问题是,难道4MHZ CRYSTAL 就不能用9600的BAUD RATE?
4Mhz 可以跑到9600bps。
我朋友告诉我如果用4 MHZ CRYSTAL OSCILLATION 就一定要用300 的BAUD RATE.
你可以选择相信他。
你也可以学着看Datasheet, 然后告诉他。
仔细的看回Wkloh 的回复, 他已经告诉你怎样检查你的RS232 port 是否良好, 他已经教你怎样loopback了,检查你的USB to RS232 是否良好。。
这是很简单, 很基本的电路。。很基本的code。。你没有按指示Debug, 那很遗憾。 |
|
|
|
|
|
|
|

楼主 |
发表于 5-11-2011 12:43 AM
|
显示全部楼层
Win98, WinME, WinXP, Win Vista,Win7 都可以跑。
是你的电路, 不是Windows。
请问: 你有用Hy ...
pic 发表于 3-11-2011 11:25 PM 
我有用HYPER TERMINAL ,REAL TERM 试了才用VB 试的。
PUTC/PRINTF都没问题
LOOP BACK TEST有做过完全没反应。
如果是电路的问题但是不明白的就是为什么用我的电路在我朋友的电脑和他的VB PROGRAM能跑的到呢?可是我的却不能呢?
试了3台电脑,同样VB PROGRAM,同样CIRCUIT。2台WIN7,一台WINXP
最后只有一台WIN7跑的到。。
照片稍后在UPLOAD上来
谢谢。 |
|
|
|
|
|
|
| |
本周最热论坛帖子
|