📄 lib.c
字号:
#include<PIC18.h>
#include"lib.h"
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
//void uart_init(unsigned long fosc,unsigned long buad)
void uart_init(double fosc,double buad)
{
uchar i;
//SPBRG=26;
SPBRG=(uchar)(fosc/buad/16+0.5)-1;
//X = ((FOSC/ 期望波特率)/64)-1
//9600= 4000000/9600/64-1=26.04
RCSTA=0X90; //1000 0000 串口使能
//8位数据接收
//
//可以接收数据
//禁止地址探测
//
TXSTA=0X24; //1000 0100通信主模式,信号由内部波特率发生器产生
//8位发送
//TXEN=1,允许发送
//异步模式
//
//高波特率通信 (低速)波特率 =FOSC/(64(X+1)) 高速:波特率=FOSC/(16(X+1))
TXIE=0;//不允许发送中断
RCIE=1;//允许接收中断
RCIP=1;//串口接收为高优先级
IPEN=1;
PEIE=1;
GIE=1;//开全局中断
TRISE=0X00;
for(i=0;i<100;i++);
}
char uart_getch(void)
{
char rcdata;
while(RCIF)
{
RCIF=0;
rcdata=RCREG;//由于接收是双缓冲结构,所以读的时候读两次,第二次才是需要的值
rcdata=RCREG;
}
return rcdata;
}
void uart_getstring(char *string)
{
char c;
uchar num=0;
while((c=uart_getch())!='\r')
{
if(c=='\b')
{
if(num )
{
uart_sendchar('\b');
uart_sendchar(' ');
string--;
num--;
}
}
else
{
num++;
*string++=c;
uart_sendchar(c);
}
}
*string='\0';
uart_sendchar('\n');
}
void uart_sendstring(char *str)
{
while(*str)
uart_sendchar(*str++);
}
void uart_sendchar(char ch)
{
while(!TXIF);
TXREG=ch;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -