📄 74164.c
字号:
#ifndef OS_MASTER_FILE
#include "includes.h"
#endif
/******************************************
* 名称 : void putchar(unsigned char c)
* 功能描述: 字符输出函数
* 输入参量:
* 输出参量:
* 调用子程:
* 使用方法:
--------------—*/
void Putchar(unsigned char c)
{
while (!(UCSRA&(1 << UDRE))); //判断上次发送有没有完成
RS_485N_E; //设置MAX485为发送数据装态
UDR = c;
while(!(UCSRA & 0x40)); // Wait for char to be cue off
UCSRA |= 0x40; // Clear flag
RS_485N_D; //设置MAX485为RX装态
}
/******************************************
* 名称 : unsigned char getchar(void)
* 功能描述: 字符输入函数
* 输入参量:
* 输出参量:
* 调用子程:
* 使用方法:
--------------—*/
unsigned char Getchar(void)
{
RS_485N_D; //设置MAX485为RX装态
_NOP();
while(!(UCSRA& (1<<RXC)));
return UDR;
}
/******************************************
* 名称 : int puts(char *s)
* 功能描述: 字符串输出函数
* 输入参量:
* 输出参量:
* 调用子程:
* 使用方法:
--------------—*/
unsigned char Prints(char *s)
{
while (*s)
{
Putchar(*s);
s++;
}
Putchar(0x0a);//回车换行
Putchar(0x0d);
return 1;
}
/******************************************
* 名称 : void Puthexbyte(unsigned char ch)
* 功能描述: 将数据用16进制的格式表示
* 输入参量:
* 输出参量:
* 调用子程:
* 使用方法:例如数据puthexbyte(0x16)将向串口送出0x31 0x36,如果用串口工具的文本模式将看到"16"
--------------—*/
void Puthexbyte(unsigned char ch)
{
unsigned char i;
i=(ch>>4);
if (i<=9) Putchar(0x30+i);
else Putchar (0x37+i);
i=(ch&0x0F);
if (i<=9) Putchar(0x30+i);
else Putchar (0x37+i);
}
/* 不含回车换行的字符串输出函数 */
void Putstr(char *s)
{
while (*s)
{
Putchar(*s);
s++;
}
}
/* */
/******************************************
* 名称 : void Uart_init(void)
* 功能描述: UART初始化,容许接收中断
* 输入参量:
* 输出参量:
* 调用子程:
* 使用方法:
--------------—*/
void Uart_init(void)
{
UCSRB=(1<<RXEN)|(1<<TXEN)|(1<<RXCIE);//允许发送和接收
UBRRL=(fosc/16/(baud+1))%256;
UBRRH=(fosc/16/(baud+1))/256;
UCSRC=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);//8位数据+1位STOP位
RS_485N_D;// clr_bit(PORTB,RS485EN);
}
/* RS232通信main函数 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -