|
這幾天剛復(fù)習(xí)了下C51單片機(jī),因?yàn)橹敖佑|過(guò)(沒(méi)怎么學(xué))。分享給初學(xué)者一個(gè)流水的的三種寫法:普通式、一般式、調(diào)用庫(kù)函數(shù)的方法。代碼中調(diào)用了左移函數(shù)_crol_(a,b)和 右移_cror_(a,b)函數(shù),這兩個(gè)函數(shù)在 intrins.h頭文件中。函數(shù)中的形參a代表左移或右移的值,b代表左移或右移的位數(shù)。下面是代碼。
單片機(jī)源程序如下:
- #include "reg52.h"
- #include "intrins.h"
- #define led P0
- typedef unsigned char u8;
- typedef unsigned int u16;
- /*
- sbit led1 = P0^0;
- sbit led2 = P0^1;
- sbit led3 = P0^2;
- */
- void delay(u16 i)
- {
- while(i--);
- }
- void main(void)
- {
- u8 i;
- u8 j;
- // led = ~0x01;
- // delay(50000);
- while(1)
- {
- /* 最簡(jiǎn)單的寫法
- led1 = 0;
- delay(50000);
- led1 = 1;
- delay(50000);
- led2 = 0;
- delay(50000);
- led2 = 1;
- delay(50000);
- led3 = 0;
- delay(50000);
- led3 = 1;
- delay(50000);
- */
-
- // 中級(jí)寫法
- for(i = 0; i < 8; i++)
- {
- P0 = ~(0x01<<i); //~的意思按位取反 <<的意思是右移。
-
- delay(50000);
- }
- for(j = 0; j < 8; j++)
- {
- P0 = ~(0x80>>j);
- delay(50000);
- }
- //調(diào)用庫(kù)函數(shù)實(shí)現(xiàn)
- /* for(i = 0; i < 7; i++)
- {
- led = _crol_(led,1);
- delay(50000);
- }
- for(i = 0; i < 7; i++)
- {
- led = _cror_(led,1);
- delay(50000);
- } */
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
LEDl流水燈.zip
(15.9 KB, 下載次數(shù): 8)
2020-3-28 22:03 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
|