00 59秒計時器(利用軟體延時)

2021-04-16 10:13:09 字數 2340 閱讀 6258

1.

實驗任務

如下圖所示,在

at89s51

微控制器的p0和

p2埠分別接有兩個共陰數碼管,

p0口驅動顯示秒時間的十位,而

p2口驅動顯示秒時間的個位。

2.

電路原理圖

圖4.11.1

3.

系統板上硬體連線

(1.把「微控制器系統」區域中的

p0.0/ad0

-p0.7/ad7

埠用8芯排線連線到「四路靜態數碼顯示模組」區域中的任乙個a-

h埠上;要求:

p0.0/ad0

對應著a

,p0.1/ad1

對應著b,……

,p0.7/ad7

對應著h。

(2.把「微控制器系統」區域中的

p2.0/a8

-p2.7/a15

埠用8芯排線連線到「四路靜態數碼顯示模組」區域中的任乙個a-

h埠上;要求:

p2.0/a8

對應著a

,p2.1/a9

對應著b,……

,p2.7/a15

對應著h。

4.

程式設計內容

(1.在設計過程中我們用乙個儲存單元作為秒計數單元,當一秒鐘到來時,就讓秒計數單元加

1,當秒計數達到

60時,就自動返回到

0,從新秒計數。

(2.對於秒計數單元中的資料要把它十位數和個數分開,方法仍採用對

10整除和對

10求餘。

(3.在數碼上顯示,仍通過查表的方式完成。

(4.一秒時間的產生在這裡我們採用軟體精確延時的方法來完成,經過精確計算得到

1秒時間為

1.002秒。

程式框圖

圖4.11.2

6.

彙編源程式

secondequ 30h

org 0

start:mov second,#00h

next:mov a,second

mov b,#10

div ab

mov dptr,#table

movc a,@a+dptr

mov p0,a

mov a,b

movc a,@a+dptr

mov p2,a

lcall dely1s

inc second

mov a,second

cjne a,#60,next

ljmp start

dely1s:mov r5,#100

d2:mov r6,#20

d1:mov r7,#248

djnz r7,$

djnz r6,d1

djnz r5,d2

rettable:db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh

end7.

c語言源程式

#include

unsigned char code table=;

unsigned char second;

void delay1s(void)

void main(void)

p0=table[second/10];

p2=table[second%10];}}

高精度納秒計時器

ktimer.h windows graphics programming win32 gdi and directdraw?feng yuan publisher prentice hall ptr first edition december 01,2000 高精度納秒計時器,最後修改 2008...

c納秒級計時器 C 11 計時器!真香

在我們寫程式過程中,有時候需要測試我們的程式語句執行時間的耗時,當前也是有很多的庫提供我們去使用,一直沒有良好的跨平台的庫可以提供出來 而且一般這種 也是由我們程式設計師自己呼叫系統的庫來進行,但是往往會出現精度不足和不支援跨平台等問題 他來了。他來了。他踩著七彩祥雲來了 他 就是c 11中引進bo...

用SysTick做的延時計時器

這個實驗是使用systick中斷方式做延時定時器。主要目的是熟悉下systick的使用。首先,定義個延時函式,目的是計數 void delay io uint32 t ntime void timingdelay decrement void 其中timingdelay decrement是供sys...