📄 main.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 + -