單片機C語言C51的輸入輸出

在C51語言中,它本身不提供輸入和輸出語句,輸入和輸出操作是由函數來實現的。在C51的標準函數庫中提供了一個名爲“stdio.h”的一般I/O函數庫,它當中定義了C51中的輸入和輸出函數。當對輸入和輸出函數使用時,須先用預處理命令“#include  <stdio.h>”將該函數庫包含到文件中。

在C51的一般I/O函數庫中定義的I/O函數都是通過串行接口實現,在使用I/O函數之前,應先對51單片機的串行接口進行初始化。選擇串口工作於方式2(8位自動重載方式),波特率由定時器/計數器1溢出率決定。例如,設系統時鐘爲12MHZ,波特率爲2400,則初始化程序如下:

SCON=0x52;

TMOD=0X20;

TH1=0xf3;

TR1=1;

1.  格式輸出函數printf()

printf()函數的的作用是通過串行接口輸出若干任意類型的數據,它的格式如下:

printf(格式控制,輸出參數表)

    格式控制是用雙引號括起來的字符串,也稱轉換控制字符串,它包括三種信息:格式說明符、普通字符和轉義字符。

(1)格式說明符,由“%”和格式字符組成,它的作用是用於指明輸出的數據的格式輸出,如%d、%f等,它們的具體情況見下表。

(2)普通字符,這些字符按原樣輸出,用來輸出某些提示信息。

(3)轉義字符,就是前面介紹的轉義字符(下表),用來輸出特定的控制符,如輸出轉義字符\n就是使輸出換一行。

輸出參數表是需要輸出的一組數據,可以是表達式。

2.  格式輸入函數scanf()

scanf()函數的作用是通過串行接口實現數據輸入,它的使用方法與printf()類似,scanf()的格式如下:

        scanf(格式控制,地址列表)

格式控制與printf()函數的情況類似,也是用雙引號括起來的一些字符,可以包括以下三種信息:空白字符、普通字符和格式說明。

(1)空白字符,包含空格、製表符、換行符等,這些字符在輸出時被忽略。

(2)普通字符,除了以百分號“%”開頭的格式說明符而外的所有非空白字符,在輸入時要求原樣輸入。

(3)格式說明,由百分號“%”和格式說明符組成,用於指明輸入數據的格式,它的基本情況與printf()相同,具體情況見表4-5。

地址列表是由若干個地址組成,它可以是指針變量、取地址運算符“&”加變量(變量的地址)或字符串名(表示字符串的首地址)。

【例】 使用格式輸入輸出函數的例子

#include  <reg52.h>     //包含特殊功能寄存器庫

#include  <stdio.h>      //包含I/O函數庫

void main(void)            //主函數

{

int  x,y;                          //定義整型變量x和y

SCON=0x52;                 //串口初始化

TMOD=0x20;

TH1=0XF3;

TR1=1;

printf(“input  x,y:\n”);                  //輸出提示信息

scanf(“%d%d”,&x,&y);                //輸入x和y的值

printf(“\n”);                                   //輸出換行

printf(“%d+%d=%d”,x,y,x+y);    //按十進制形式輸出

printf(“\n”);                                   //輸出換行

printf(“%xH+%xH=%XH”,x,y,x+y);    //按十六進制形式輸出

while(1);      //結束

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章