郭天祥十天學完微控制器學習筆記第二彈

2021-10-18 12:40:48 字數 3338 閱讀 8098

第二課

這一節主要講通過各種函式來實現對流水燈的控制,比如延時,流水亮滅等,還有學習如何在軟體上除錯(有學c語言的話應該都已經學過了)

直接上例子,讓第乙個燈一間隔500ms閃爍

#include

#define uint unsigned int

sbit d1=p1

^0;void

delay()

;void

main()

;}void

delay()

幾點注意,define巨集定義,使**更加簡潔;自己定義的函式使用前要宣告原函式;delay中for語句的巢狀不是必要的。如果要使亮和滅持續時間不同,可以用如下帶引數的delay函式,更加靈活。

void

delay

(uint x)

例二,流水燈控制

#include

#include

unsigned int x,y;

unsigned char tempt;

void

delay

(unsigned int y)

;void

main()

}void

delay

(unsigned int y)

這個例子可以看出上乙個例子中巨集定義的方便性,因為多次使用到unsigned int,故可將它定義為更加簡單的形式。

_crol_是unsigned char型資料的迴圈左移,如一開始tempt=0xfe(即1111 1110),左移一次後為(1111 1101)即第二個燈亮,以此類推。

下面用定義位的方式來實現,要麻煩很多

#include

sbit d1=p1

^0;sbit d2=p1

^1;sbit d3=p1

^2;sbit d4=p1

^3;sbit d5=p1

^4;sbit d6=p1

^5;sbit d7=p1

^6;sbit d8=p1

^7;unsigned int x,y;

void

delay

(unsigned int)

;void

main()

}void

delay

(unsigned int y)

}

作業:

#include

#include

#define uint unsigned int

#define uchar unsigned char

sbit fm=p2

^3;void

delay

(uint)

;uchar tempt;

uint x,y,z;

void

main()

}void

delay

(uint z)

x--;}

}

提醒一下自己用到函式的時候不要老是忘了include函式庫啊

4.用減法實現加法,tempt=0xfe時第乙個燈亮代表一,tempt=tempt-1,第二個燈亮代表二,以此類推。

5.這個需要比較細心,有點麻煩,不過除錯出來成功了還是挺開心的,耶~

#include

#include

#define uint unsigned int

#define uchar unsigned char

uint x,y,z,t;

uchar tempt;

void

delay

(uint)

;void

main()

;while

(tempt<

0xfe);

while

(t<=7)

}}}void

delay

(uint z)

這裡函式宣告時原本用了delay(uint),這樣沒有確定返回型別,則使用預設定義,後面對函式進行定義時有void返回型別,編譯器會以為你對同個函式進行不同定義,會出現函式redefinition報錯;

#include

#include

#define uint unsigned int

#define uchar unsigned char

uint x,y,z,t;

uchar tempt;

void

delay

(uint)

;void

main()

; tempt=

0xfc

;while

(t<16)

; tempt=

0xf8

;while

(t<24)

; tempt=

0xf0

;while

(t<32)

; tempt=

0xe0

;while

(t<40)

; tempt=

0xc0

;while

(t<48)

; tempt=

0x80

;while

(t<56)

; tempt=

0x00;p1

=tempt;}}

void

delay

(uint z)

7,這裡只實現兩個燈從兩端往中間流動部分

#include

#include

#define uint unsigned int

sbit d1=p1

^0;sbit d2=p1

^1;sbit d3=p1

^2;sbit d4=p1

^3;sbit d5=p1

^4;sbit d6=p1

^5;sbit d7=p1

^6;sbit d8=p1

^7;uint x,y,z,t;

void

delay

(uint)

;void

main()

;}void

delay

(uint z)

okay,今天先學到這裡啦~

郭天祥10天微控制器學習筆記(1 1)

program 1.1 commit include 包含52標頭檔案,對應的是微控制器型號,其中含各io陣腳的命名定義 sbit d2 p3 0 位定義 p3 0這個陣腳的名字叫d2 unsigned int a 無符號整型,65536到65535 2的16次方 void main 無參主函式入口...

郭天祥 10天學會51微控制器 1預備知識

一.知識點整理 計算機與微控制器之間通訊時需要加電平轉換晶元。c 51的基本資料型別 c 51的資料型別擴充定義 1 str 特殊功能暫存器宣告 2 str16 str的十六位資料宣告 3 sbit 特殊功能位宣告 4 bit 位變數宣告 eg str scon 0x98 定義了乙個暫存器,位址序號...

《十天學會微控制器和C語言程式設計》

十天學會微控制器和c語言程式設計 ed2k file 十天學會微控制器和c語言程式設計 lesson1.rar 449712628 262b8896ad6828cd33ed7189fe94cb2d h 76mxif34bfv3vupllbn3asnovcachto3 ed2k file 十天學會微控...