郭天祥微控制器程式設計100例程式及隨筆3 定時器程式設計

2021-08-16 22:22:41 字數 1488 閱讀 2688

1.五個知識點:

1.1設定中斷的流程:

1.1.1主函式設定初始化

1.1.2中斷服務程式(由使用者自己編寫),設定要做的事情,但不可以放太多。

1.2主函式的設定(定時器初始化)

舉例:

void main()

或者使用void init_interrupt(){}也可以,不一定要直接放在總程式裡面。

設定流程如下:

注:關於tmod:

1.3中斷子函式

需要跟著時間改變而進行改變的物件,都要用定器去輔助實現他們。

可由使用者自己設定,格式如下:

void 函式名 interrupt m [using n]

說明:interrupt m的m為中斷號。using n 的n的意思大概是當有緊急的事情需要cpu處理時,現有程式可以存入指定的暫存器組,猜測這個n是暫存器組號。

在中斷服務程式中,一定要記得重灌初值,否則每次計時的時間就會不對。

1.4 uchar與uint的區別

uchar是無符號整型,8bit,最大到255.也可以寫作 u8;

uint是16bit最大到65535.也可以寫作 u16;

一般數字較小採用uchar來定義,可以節省空間。

1.5 數碼管分位顯示可以採用延時函式。

例如:

void display(shi,ge)

2.中斷相

關練習程式如下:

利用定時器0工作方式1,在實驗板上實現第乙個發光管以1s亮滅閃爍。

#include #define uchar unsigned char

uchar num;

sbit led1 = p1^0;

void main()

void timer_0() interrupt 1

}用定時器0的方式1實現第乙個發光二極體以200ms間隔閃爍,用定時器1的方式1實現數碼管的前兩位59s迴圈計時。

在定時器中做改變發光管狀態和數值大小的事情。也就是說,需要跟著時間改變而進行改變的物件,都要用定器去輔助實現他們。

#include #define uchar unsigned char

uchar num,i,shi,ge,j,m,n;

sbit led1 = p1^0;

void delay();

uchar code table =

;sbit wela = p2^7;

sbit dula = p2^6;

void main()

}void display(shi,ge)

void timer_0() interrupt 1

}void timer_1() inetrrupt 4

}void delay()

郭天祥微控制器程式設計100例程式及隨筆2 數碼管程式設計

1.兩個問題,乙個待解決 1.1數碼管的dula,wela,的原理和led1一樣嗎?微控制器為什麼憑這個名字就能找到數碼管?初步猜測 是郭天祥在他的51微控制器裡面焊接定義好的,就是不知道放在別的地方是否通用。1.2 sbit dula p2 6 段的定義介面一定是這個嗎?段的定義口和位的能不能互換...

郭天祥51微控制器教程 IIC匯流排

include define uchar unsigned char sbit sda p2 0 資料匯流排 sbit scl p2 1 時鐘匯流排 void delay 大概延時5us void delay1 uchar x 這是乙個寫資料的整體過程 void wirte add uchar ad...

郭天祥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 無參主函式入口...