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

📄 uart.c

📁 PIC18F4580计算频率的程序
💻 C
字号:
#include "PIC18.h"
#include "def.h"
#include "lib.h"


//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=0;//开全局中断
}

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 + -