1. 程式人生 > >#51微控制器學習筆記# 流水燈的實現

#51微控制器學習筆記# 流水燈的實現

一、原理
常見LED燈模組一共有八位,如果二極體的負極接VCC,正極接51晶片引腳,則給引腳輸入低電平,LED燈亮。如果二極體負極接GND,則高電平有效。

#include <reg52.h>
#include <intrins.h>
#define led P1
#define uchar unsigned char
uchar i,j;
void delay(uchar k){
 for(i=k;i>0;i--){
  for(j=100;j>0;j--){}
 }
}
void main(){
// led = 0xfe;//左移流水燈
 led = 0xef;//右移流水燈
 while(1){
  /*	左移實現
 for(i=0;i<7;i++){
   	led = _crol_(led,1);	
	 delay(50);	
	 }
*/
//右移實現
  for(i=0;i<7;i++){
   led = _cror_(led,1);
   delay(50);
  }
 }
}

三、語法總結
1、此次流水燈實現,使用了 —crol—()、 —cror—()函式;—crol—()函式是帶迴圈左移函式,—cror—()是帶迴圈右移函式;函式在“intrins.h”庫中呼叫。
2、—crol—() 與 << 的不同?
舉個例子:P1 = 1111 1110//0xfe
P1 = crol(P1,1);
結果:1111 1101、1111 1011;//這個是迴圈左移
P1 << = 1;
結果: 1111 1100 、 1111 1000//位左移,後面補0