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 時鐘脈衝數,...