設晶振頻率為6MHZ,試用T0為外部計數器,程式設計實現每當記到脈衝,使T1開始2ms定時

時間 2022-03-30 02:15:17

1樓:可軒

解:t0方式0作計數器,計數初值a0 = 2^13 - 1000 =7192d =1c18h

th0←1ch, tl0←18h

機器週期 t = 12/fosc = 12/(6x10^6) = 2x10^-6s =2μ s

2ms週期對應的計數滿值 = 2000μ s/2μ s = 1000

t1方式1作2ms定時器,計數初值a1 = 2^16 -1000 =64536d =fc18h

th1←fch, tl1←18h

org 0000h

ajmp main

org 0100h

main: mov sp, #60h ;;堆疊指標初值

mov tmod, #14h ;;t0方式0作計數器,t1方式1作定時器

lp0 mov th0, #1ch ;;t0計數初值高8位

mov tl0, #18h ;;t0計數初值低8位

setb tr0 ;;啟動t0計數

lp1: jbc tf0, dlay ;;若t0計數溢位,轉dlay延時2ms

sjmp lp1 ;;若t0計數未溢位,繼續查詢

dlay: clr tr0 ;;關閉t0

mov th1, #fch ;;t1計數初值高8位

mov tl1, #18h ;;t1計數初值低8位

setb tr1 ;;啟動t1計數延時

lp2: jbc tf1, lp3 ;;若t1計數延時至2ms,轉lp3

sjmp lp2 ;;若t1計數延時未達2ms,繼續查詢

lp3: clr tr1 ;;關閉t1

ajmp lp0 ;;轉lp0,使t0重新計數end

2樓:匿名使用者

那應該是10000000000

微控制器題目,求高手解答。。。謝謝!!分可再追加 15

3樓:

程式設計學習就要從這些簡單的開始編起,不要將來畢業出來什麼都不會。。程式設計要多看例子,書本上一般有註釋。另外還要動手下去實踐,要知道你的專業應該是工科,不是理科。

微控制器定時器的組合語言程式程式設計

4樓:夕昌毛藍

1、org

0000h

ajmp

main

org0100h

main:

movr2,#00h

movtmod,#20h

movth1,#231

movtl1,#231

setb

p1.2

setb

tr1here:

jnbtf1,here

pt_1:

cjne

r2,#07h,pt11

setb

p1.2

movr2,#00h

clrtf1

ajmp

here

pt11:

clrp1.2

incr2

clrtf1

ajmp

here

end2、

org0000h

ajmp

main

org000bh

ajmp

it_0

org001bh

ajmp

it_1

org0100h

main:

movtmod,#51h

movth1,#0fch

movtl1,#18h

movie,#10001010b

setb

tr1sjmp

$it_1:

clrtr1

movth0,#0fch

movtl0,#18h

setb

tr0reti

it_0:

clrtr0

movth1,#0fch

movtl1,#18h

setb

tr1retiend

5樓:匿名使用者

org 0000h

sjmp start

org 001bh

ajmp int_timer1

org 0040h

start:

mov tmod,#20h

mov th1,#231

mov tl1,#231

setb et1

setb tr1

setb ea

mov p1,#00h

clr a

sjmp $

int_timer1:

jz outout_high

clr p1.2

sjmp inc_a

outout_high:

setb p1.2

inc_a: inc a

cjne a,#08h,skip_set0clr a

skip_set0:

retiend

以定時/計數器1進行外部事件計數。每計數1000個脈衝後,定時/計數器1轉為定時工作方式,定時10

6樓:可軒

解:t1方式0作計數器,計數預裝值x = 2^13 - 1000 =7192d =1c18h

th1←1ch, tl1←18h

機器週期 t = 12/fosc = 12/(6x10^6) = 2x10^-6s =2μ s

10ms週期對應的計數滿值 = 10000μ s/2μ s = 5000

t1方式0作10ms定時器,計數初值 = 2^13 -5000 =3192d = 0c78h

th1←0ch, tl1←78h

org 0000h

ajmp main

org 0100h

main: mov sp, #60h ;;堆疊指標初值

lp0: mov tmod, #40h ;;t1方式0作計數器

mov th1, #1ch ;;t1計數預裝值高8位

mov tl1, #18h ;;t1計數預裝值低8位

setb tr1 ;;啟動t1計數

lp1: jbc tf1, dlay ;;若t計數溢位,轉dlay延時10ms

sjmp lp1 ;;若t1計數未溢位,繼續查詢

dlay: clr tr1 ;;關閉t1

mov tmod, #00h ;;t1改作方式0作定時器

mov th1, #0ch ;;t1定時計數預裝值高8位

mov tl1, #78h ;;t1定時計數預裝值低8位

setb tr1 ;;啟動t1計數延時

lp2: jbc tf1, lp3 ;;若t1計數延時至10ms,轉lp3

sjmp lp2 ;;若t1計數延時未達10ms,繼續查詢

lp3: clr tr1 ;;關閉t1

ajmp lp0 ;;轉lp0,使t1重新作定時器end

以定時/計數器1進行外部事件計數。每計數1000個脈衝後,定時/計數器1轉為定時工作方式,定時10ms後,又 5

7樓:傲京心

解:t1方式0作計數器,計數預裝值x = 2^13 - 1000 =7192d =1c18h

th1←1ch, tl1←18h

機器週期 t = 12/fosc = 12/(6x10^6) = 2x10^-6s =2μ s

10ms週期對應的計數滿值 = 10000μ s/2μ s = 5000

t1方式0作10ms定時器,計數初值 = 2^13 -5000 =3192d = 0c78h

th1←0ch, tl1←78h

org 0000h

ajmp main

org 0100h

main: mov sp, #60h ;;堆疊指標初值

lp0: mov tmod, #40h ;;t1方式0作計數器

mov th1, #1ch ;;t1計數預裝值高8位

mov tl1, #18h ;;t1計數預裝值低8位

setb tr1 ;;啟動t1計數

lp1: jbc tf1, dlay ;;若t計數溢位,轉dlay延時10ms

sjmp lp1 ;;若t1計數未溢位,繼續查詢

dlay: clr tr1 ;;關閉t1

mov tmod, #00h ;;t1改作方式0作定時器

mov th1, #0ch ;;t1定時計數預裝值高8位

mov tl1, #78h ;;t1定時計數預裝值低8位

setb tr1 ;;啟動t1計數延時

lp2: jbc tf1, lp3 ;;若t1計數延時至10ms,轉lp3

sjmp lp2 ;;若t1計數延時未達10ms,繼續查詢

lp3: clr tr1 ;;關閉t1

ajmp lp0 ;;轉lp0,使t1重新作定時器end

如果晶振頻率為6MHz時,定時計數器在工作方式方式方式2下,其最大的定時時間為多少

津人依夢 晶振頻率為6mhz時,定時 計數器在工作方式0 方式1 方式2下,其最大的定時時間分別為 16.384 ms 131.072 ms 0.512 ms 根據計算公式,x m 計數初值 m fosc t 12,其中x是計數初值,要得到最大定時時間x 0 m最大計數值,工作方式0時m 2 13 ...

微控制器晶振為6mhz編寫100ms延時程式

胖大海君 嘿嘿 先給你改個錯誤 在使用6mhz晶振時,1個機器週期為1us,是不對的。51微控制器在使用6mhz晶振時 1個機器週期 12 6mhz 2us 可以編寫100ms延時子程式 呼叫子程式ys100ms 就可以延時100ms ys100ms mov r7,100 l1 mov r6,250...

當80C51微控制器晶振頻率為12MHz時,時鐘週期 機器週期各是多少

111111前的 當80c51微控制器晶振頻率為12mhz時,時鐘週期為 1 12 微秒,機械週期為1微秒。時鐘週期 一個時鐘脈衝所需要的時間。在計算機組成原理中又叫t週期或節拍脈衝。是cpu和其他微控制器的基本時間單位。它可以表示為時鐘晶振頻率 1秒鐘的時鐘脈衝數 的倒數 也就是1s 時鐘脈衝數,...