51單片機學習筆記(二)_流水燈實驗
一、控制一/多燈亮滅
匯編實現(xiàn)
;注釋LOOP:;SETB P1.1 ;(1)熄滅燈MOV P1,#0FFH;LCALL DELAY ;(2)延時一段時間;CLR P1.1 ;(3)點亮燈MOV P1,#0FDH;LCALL DELAY ;(4)延時一段時間 AJMP LOOP ;(5)跳轉(zhuǎn)到第一句LOOP處;以下子程序 DELAY: MOV R7,#250 ;D1: MOV R6,#250 ;D2: DJNZ R6,D2 ;R6=R6-1;IF(R6!=0) GOTO D2;DJNZ R7,D1 ;RET ;返回主程序END ;子程序結(jié)束標志
C語言實現(xiàn)
#include開關(guān)控制單燈亮滅sbit led=P1^3;void Delay(){unsigned char i,j;for(i=0;i<250;i++)for(j=0;j<200;j++);}void main(){while(1){P1=0xfe;Delay(); Delay();Delay();Delay();led=0;Delay(); Delay();Delay();Delay();P1=0x00;Delay(); Delay();Delay();Delay();}}
#includesbit led=P1^3;void main(){while(1){if(P0^1==0){ //開關(guān)是否按下led=0;}else{led=1;}}}
流水燈表示乘法運算結(jié)果
#includevoid main(void){unsigned char s,m,n;m=64;n=71;s=m*n; //s=4544=17*256+192 所以用P0表示17、P1表示192P0=s/256;P1=s%256;}
走馬燈
#include摘自《單機片C語言編程100個實例》void Delay(){unsigned char i,j;for(i=0;i<250;i++)for(j=0;j<250;j++);}void main(){unsigned int i;i=0x01; while(1){P1=i; Delay();i<<=1;if(i==0x100) i=0x01;}}
//實例19:用if語句控制P0口8位LED的流水方向#include//包含單片機寄存器的頭文件 sbit S1=P1^4; //將S1位定義為P1.4sbit S2=P1^5; //將S2位定義為P1.5/*函數(shù)功能:主函數(shù) */void main(void){ while(1){if(S1==0) //如果按鍵S1按下 P0=0x0f; //P0口高四位LED點亮 if(S2==0) //如果按鍵S2按下 P0=0xf0; //P0口低四位LED點亮 } }
評論