?? output.c
字號:
/*****************************************************************************
* 功能描述: 將A/D轉(zhuǎn)換結(jié)果送往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";
/****************************************************************************
* 函數(shù)原型 : void send_byte(char src_byte);
* 功 能 : 將一個字節(jié)的數(shù)據(jù)送往UART并等待傳送結(jié)束。
*****************************************************************************/
void send_byte(char src_byte) {
S0BUF=src_byte; /* 裝入傳送字節(jié) */
while(TI==0); /* 等待傳送結(jié)束 */
TI=0; /* 清除傳送標志 */
}
/****************************************************************************
* 函數(shù)原型 : void decode(char src_nibble);
* 功 能 : 將數(shù)據(jù)轉(zhuǎn)換成ASCII碼并傳送。
*****************************************************************************/
void decode(char src_nibble) {
if (src_nibble<0x0a)
send_byte(src_nibble+0x30);
else
send_byte(src_nibble+0x41-0x0a);
}
/****************************************************************************
* 函數(shù)原型 : void send_bin_byte(char src_byte)
* 功 能 : 分離出數(shù)據(jù)中的一個字節(jié), 將其轉(zhuǎn)換成ASCII碼并傳送。
*****************************************************************************/
void send_bin_byte(char src_byte) {
decode((src_byte>>4) & 0x0f);
decode(src_byte & 0x0f);
}
/****************************************************************************
* 函數(shù)原型 : void send_dec_int(unsigned int src_wrd)
* 功 能 : 將二進制整數(shù)轉(zhuǎn)換成十進制整數(shù)并傳送。
*****************************************************************************/
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);
}
}
/****************************************************************************
* 函數(shù)原型 : void send_string(char code *str_ptr)
* 功 能 : 取出ROM中的字符串并傳送。
*****************************************************************************/
void send_string(char code * str_ptr) {
while (*str_ptr !=0)
send_byte(*(str_ptr++)); /* 發(fā)送字節(jié) */
}
/****************************************************************************
* 函數(shù)原型 : void write_UART(unsigned int *ADC_result,
* unsigned int conversion_cnt);
* 功 能 : 將結(jié)果轉(zhuǎn)換成正確的格式并送往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); /* 發(fā)送信息號 */
send_dec_int(conversion_cnt);
send_string(string_1);
for (cnt=0;cnt<8;cnt++) {
send_string(new_line);
send_string(string_2); /* 發(fā)送通道號 */
decode(cnt);
send_string(string_4);
send_dec_int(*(result_ptr++)); /* 發(fā)送結(jié)果 */
send_string(string_3);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -