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

📄 rse232.c

📁 rs232 linux环境下对串口rs232的操作
💻 C
字号:
/******************************************/
/*              RS232通信演示程序         */ 
/*             作者:dengchongguang 电子牛 */
/*               2005年1月15日            */
/*  目标MCU:MEGA8   晶振:内部(EXT) 8MHZ   */
/******************************************/
#include <iom8v.h>
#define fosc 8000000 //晶振8MHZ
#define baud 19200	 //波特率
/*  		端口初始化函数 		 */
void port_init(void)
{
 PORTC &= 0xF0;
 DDRC  |= 0x0F;
}
/*  		字符输出函数 		 */
void putchar(unsigned char c)
	{	 
     while (!(UCSRA&(1<<UDRE)));
	 UDR=c;    
	}
/*  		字符输入函数 		 */	
unsigned char getchar(void)
  	{
	 while(!(UCSRA& (1<<RXC)));
     return UDR;
	}		
/*			字符串输出函数	   	 */	
int puts(char *s)
	{
	while (*s)
		{
		putchar(*s);
		s++;
		}	
    putchar(0x0a);//回车换行
	putchar(0x0d);
	return 1;
	}
/*	 	   不含回车换行的字符串输出函数 	 */	
void putstr(char *s)
	{
	while (*s)
		{
		putchar(*s);
		s++;
		}	
	}	
/*			UART初始化				*/	
void uart_init(void)
{
 OSCCAL=0Xa0;
 UCSRB=(1<<RXEN)|(1<<TXEN);//允许发送和接收
 UBRRL=(fosc/16/(baud+1))%256;
 UBRRH=(fosc/16/(baud+1))/256;
 UCSRC=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);//8位数据+1位STOP位
}
/*			RS232通信main函数		*/
void main(void)
{
 unsigned char i;
 port_init();
 uart_init(); 
 while(1)
    {
	 i=getchar();
	 switch (i)
	    {
		 case 0x31: PORTC |= 0x01; break;//第1个二极管亮
		 case 0x32: PORTC &= 0xfe; break;//第1个二极管灭
		 case 0x33: PORTC |= 0x02; break;//第2个二极管亮
		 case 0x34: PORTC &= 0xfd; break;//第2个二极管灭
		 case 0x35: PORTC |= 0x04; break;//第3个二极管亮
		 case 0x36: PORTC &= 0xfb; break;//第3个二极管灭
		 case 0x37: PORTC |= 0x08; break;//第4个二极管亮
		 case 0x38: PORTC &= 0xf7; break;//第4个二极管灭
		 default: break;
		}
	}
}

⌨️ 快捷键说明

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