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

标题: 用CCS编写的与51单片机的通讯 [打印本页]

作者: winnie    时间: 2009-4-9 19:03
标题: 用CCS编写的与51单片机的通讯
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 通道
   }
}




欢迎光临 英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 (http://enroobbs.com/) Powered by Discuz! X3.2