main.c

来自「本程序是关于串口通信」· C语言 代码 · 共 61 行

C
61
字号
#include    <pic18.h>
//===================================================
//  PIC18FXX2系列串行口DEMO程序
//  其值计算和16F877一致
//  本程序采用9600波特率发送
//  实现功能为PC发一个HEX,下位机收到后原样送回
//  编写者: 刘明  2007。11。28。2317
//===================================================
void delay(unsigned int i);
void putch(unsigned char byte); 
void init_comms(void);
//===================================================
void main()
 {    asm("NOP");		 	  
	  
      init_comms();				  //串行口初始化
      RCIE=0X1;                   //使能接收中断
      GIE=0X1;                    //开放全局中断
      PEIE=0X1;                   //使能外部中断
   while(1)                   
   {//putch(0x11);//发送一个BYTE
	delay(30000);
	   }
 }
//===============中断函数=============================
void interrupt usart(void)
  {
   if(RCIE&&RCIF)            //判断是否为串口接收中断
     {
      TXREG=RCREG;           //把接收到的数据发送回去
     }
   }
//===================DELAY===========================
void delay(unsigned int i)
{while(i)
	i--;}
//==================UART INIT===================
void init_comms(void)
{
	SPBRG = 0x42;    //   在高速模式下 9600 波特率。
	                 //   初值的计算公式:SPBRG =(Fosc/波特率/16)-1
	TXSTA = 0x24;    //   高速模式,允许发送
	RCSTA = 0x90;    //   允许接受
}
//==================PUT CHAR====================
void putch(unsigned char byte) 
{
	/* output one byte */
	while(!TRMT)	/* set whilst TX in progress */
		continue;
	TXREG = byte;
}
//================GET CHAR =======================
unsigned char getch(void)
{
	//* retrieve one byte 
	while(!RCIF)	//* set when register is not empty 
		continue;
	return RCREG;	
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?