📄 output.c
字号:
/*****************************************************************************
* 功能描述: 将A/D转换结果送往80C552的 UART
*****************************************************************************/
#include <reg552.h>
char code string_0[] = "Conversion #";
char code string_1[] = ": (Ref is 5.12V)";
char code string_2[] = "ADC_Channel #";
char code string_3[] = "mV";
char code string_4[] = ": ";
char code new_line[] = "\r\n";
/****************************************************************************
* 函数原型 : void send_byte(char src_byte);
* 功 能 : 将一个字节的数据送往UART并等待传送结束。
*****************************************************************************/
void send_byte(char src_byte) {
S0BUF=src_byte; /* 装入传送字节 */
while(TI==0); /* 等待传送结束 */
TI=0; /* 清除传送标志 */
}
/****************************************************************************
* 函数原型 : void decode(char src_nibble);
* 功 能 : 将数据转换成ASCII码并传送。
*****************************************************************************/
void decode(char src_nibble) {
if (src_nibble<0x0a)
send_byte(src_nibble+0x30);
else
send_byte(src_nibble+0x41-0x0a);
}
/****************************************************************************
* 函数原型 : void send_bin_byte(char src_byte)
* 功 能 : 分离出数据中的一个字节, 将其转换成ASCII码并传送。
*****************************************************************************/
void send_bin_byte(char src_byte) {
decode((src_byte>>4) & 0x0f);
decode(src_byte & 0x0f);
}
/****************************************************************************
* 函数原型 : void send_dec_int(unsigned int src_wrd)
* 功 能 : 将二进制整数转换成十进制整数并传送。
*****************************************************************************/
void send_dec_int(unsigned int src_wrd) {
unsigned char a,b,c,d,e;
a=src_wrd/1000; /* a=千位 */
b=((src_wrd%1000)/100); /* b=百位 */
c=((src_wrd%100)/10); /* c=十位 */
d=src_wrd%10; /* d=个位 */
e=16*c+d;
if (a==0) {
send_byte(0x20);
if (b==0) {
send_byte(0x20);
if (c==0) {
send_byte(0x20);
decode(d);
}
else
send_bin_byte(e);
}
else {
decode(b);
send_bin_byte(e);
}
}
else {
send_bin_byte((16*a)+b);
send_bin_byte(e);
}
}
/****************************************************************************
* 函数原型 : void send_string(char code *str_ptr)
* 功 能 : 取出ROM中的字符串并传送。
*****************************************************************************/
void send_string(char code * str_ptr) {
while (*str_ptr !=0)
send_byte(*(str_ptr++)); /* 发送字节 */
}
/****************************************************************************
* 函数原型 : void write_UART(unsigned int *ADC_result,
* unsigned int conversion_cnt);
* 功 能 : 将结果转换成正确的格式并送往UART。
*****************************************************************************/
void write_UART(unsigned int *result_ptr, unsigned int conversion_cnt) {
unsigned char cnt;
send_string(new_line);
send_string(new_line);
send_string(string_0); /* 发送信息号 */
send_dec_int(conversion_cnt);
send_string(string_1);
for (cnt=0;cnt<8;cnt++) {
send_string(new_line);
send_string(string_2); /* 发送通道号 */
decode(cnt);
send_string(string_4);
send_dec_int(*(result_ptr++)); /* 发送结果 */
send_string(string_3);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -