英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流

 找回密码
 立即注册
搜索
电子烟方案单片机单片机开发深圳单片机开发
单片机方案国产单片机8位单片机电子烟方案开发
查看: 3208|回复: 0
打印 上一主题 下一主题

用CCS编写的与51单片机的通讯

[复制链接]
跳转到指定楼层
1#
发表于 2009-4-9 19:03:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
RS232: CCS 可用 putc(), puts(), printf() 等函數將資訊透過標準 I/O (就是 RS232) 送出,用 getc(), gets() 等函數與 kbhit() 處理接收資訊所需的動作
第一階段: PIC 與 PC 用 RS232 通訊,PC 端用 Hyperterminal 收發即可,中間要加顆 MAX232 蕊片轉換電平準位 ... (該知道怎樣接線吧?)
第二階段: PIC 傳送給 PIC,中間加兩顆 MAX232
第三階段: PIC 傳送給 PIC,中間不加 MAX232
第四階段: PIC 傳送給 51,中間不加 MAX232
第一階段的程式,用下面這個範例就可以了
#include <16F877A.H>
#device  ADC=10         // choose 10 bit AD instead of 8
#fuses HS, NOWDT, NODEBUG, NOLVP, PUT
#use delay(clock = 20000000)        // 20 MHz crystal oscillator
#use rs232( baud = 9600, xmit = PIN_C6, rcv = PIN_C7 )
void main()
{
   int8  n = 2;
   int16 x;
   printf("Hello world ! \r\n"); // 把字串從 RS232 送出
   setup_adc_ports(ANALOG_NOT_RE1_RE2);// RA0..RA3, RA5, RE0 as 6 ch analog input
   setup_adc( ADC_CLOCK_DIV_32 );      // 32 * T_osc = 1.6 us per bit at 20 MHz
                                       // total = ( 10 bit + 2 )* 1.6 = 19.2 us
   while(1)
   {
      set_adc_channel( n );// 設定通道, 採樣電容器開始充電
      delay_us ( 30 );     // 等電容器充電到 1/2 LSB 的精度
                           // which takes ~ (1 + R_source / 10k) * 10 us
      x = read_adc();      // open S/H, start ADC, T_conversion ~ 20 us, min.,
                           // wait for EOC then read and return the result.
      printf("AN%d = %ld \r\n", n, x); // 把字串從 RS232 送出
      delay_ms( 500 );     // 休息 0.5 秒
      
      if ( kbhit() ) n = getc() - '0'; // 用 PC 的鍵盤鍵入 0 或 1, 2, 3 ... 變更 AD 通道
   }
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|公司首页|Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 ( 粤ICP备09008620号 )

GMT+8, 2024-5-13 06:13 , Processed in 0.050080 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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