並行口擴充套件4個8位並行輸出口

2021-08-21 01:19:32 字數 1531 閱讀 7014

#include  //51標頭檔案

#include  // 迴圈標頭檔案

#define uchar unsigned char

//定義uchar為無符號字元型

#define uint unsigned int

//定義uint為無符號整型

#define ulong unsigned long int

// 定義ulong為無符號長整型

//,利用移位暫存器實現串列埠資料傳送,資料傳送通過寫sbuf暫存器完成,寫入sbuf的8位資料通過rxd逐位傳送,移位脈衝則通過ttxd傳送。

//,即移位暫存器輸入/輸出模式,序列資料通過rxd輸出,txd則用於輸出移位時鐘脈衝

sbit mr = p2^0;

sbit led_dir_pressed = p2^1;

sbit led_amount_pressed = p2^2;

uchar dir_flag = 0;  //流水燈的方向

uchar led_count = 1; // 流水燈的數目

uchar led_count_flag = 0;//按鍵按下的標誌

void delay_ms(uint m);

//延遲函式

void usart_init(void);

//串列埠初始化函式

void send_char(uchar cdata);   //傳送函式

void button_scan(void);

//按鍵掃瞄函式

uchar dir_flag;

//方向標誌

uchar led_count;

//流水燈數目

uchar led_count_flag;

//流水燈數目標誌位

//毫秒級函式

void delay_ms(uint m)

}//串列埠方式0初始化 可以不使用中斷,即查詢方式,此處使用了中斷方式

void usart_init(void)

//資料初始化

//傳送位元組資料

void send_char(uchar cdata)

//中斷初始化

void usart_hander() interrupt 4

//按鍵掃瞄函式

void button_scan(void)

while(!led_dir_pressed);

}if(led_amount_pressed == 0)

while(!led_amount_pressed);

//等待按鍵釋放}}

int main()

for(i = 4; i>0; i--) //分成4個位元組依次傳送

if(dir_flag == 0)

cdata = _lror_(cdata,1); 

else

cdata = _lrol_(cdata,1); 

delay_ms(200);

mr = 0;   //消除164本身沒有鎖存的閃爍問題

} }

串 並行口針腳的定義

串 並行口針腳的定義 並行口與序列口的區別是交換資訊的方式不同,並行口能同時通過8條資料線傳輸資訊,一次傳輸乙個位元組 而序列口只能用1條線傳輸一位資料,每次傳輸乙個位元組的一位。並行口由於同時傳輸更多的資訊,速度明顯高於序列口,但序列口可以用於比並行口更遠距離的資料傳輸。1 25針並行口插口的針腳...

串 並行口針腳的定義

串 並行口針腳的定義 並行口與序列口的區別是交換資訊的方式不同,並行口能同時通過8條資料線傳輸資訊,一次傳輸乙個位元組 而序列口只能用1條線傳輸一位資料,每次傳輸乙個位元組的一位。並行口由於同時傳輸更多的資訊,速度明顯高於序列口,但序列口可以用於比並行口更遠距離的資料傳輸。1 25針並行口插口的針腳...

串 並行口針腳的定義

並行口和序列口是計算機中經常使用的通訊埠。並行口與序列口的區 別是交換資訊的方式不同,並行口能同時通過8條資料線傳輸資訊,一次傳輸 乙個位元組 而序列口只能用1條線傳輸一位資料,每次傳輸乙個位元組的一位。並行口由於同時傳輸更多的資訊,速度明顯高於序列口,在pc中常用於作打 印埠 而序列口可以比並行口...