⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 本程序是关于串口通信
💻 C
字号:
#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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -