用定時器T0定時,使P1 2口燈沒個50ms閃爍這個用51微控制器組合語言怎麼編啊

時間 2022-02-08 12:05:32

1樓:

led bit p1.2;

org 0000h

ljmp start

org 000bh

ljmp timer0interrupt

start:

mov sp,#60h

mov r2,#50;50個1ms

lcall inittimer0

loop:

;add your code here!

ljmp loop

inittimer0:

mov tmod,#00h;1ms

mov th0,#1ch

mov tl0,#18h

setb ea

setb et0

setb tr0

rettimer0interrupt:

push dph

push dpl

push acc

mov th0,#1ch

mov tl0,#18h

djnz r2,wd

mov r2,#50

;********************====cpl led ;add your code here!

;********************====wd:pop acc

pop dpl

pop dph

retiend

51微控制器,用定時器中斷,在p1口實現1s移動一次的流水燈,用組合語言編寫的程式

2樓:

//晶振12m

dseg at 30h

timetemp: ds 1

led: ds 1

cseg at 00h

org 0000h

ljmp start

org 000bh

ljmp timer0interrupt

start:

mov sp,#60h

mov timetemp,#20

mov p1,#0ffh;led低電平點亮lcall inittimer0

mov led,#0feh

loop:

mov p1,led ;add your code here!

ljmp loop

inittimer0:

mov tmod,#01h

mov th0,#high(65536-50000)mov tl0,#low(65536-50000);延時50mssetb ea

setb et0

setb tr0

rettimer0interrupt:

push acc

push psw

clr tr1

mov a,tl1

add a,#low(65536-50000)+7mov tl1,a

clr a

addc a,#high(65536-50000)setb tr1

djnz timetemp,nextt1

mov timetemp,#20

;********************====mov a,led

rl a

mov led,a;add your code here!

;********************====pop psw

pop acc

reti

3樓:匿名使用者

cnt equ 30h

org 0000h

sjmp sta

org 000bh

ljmp t0isr

org 0050h

sta:

mov tmod,#01h

mov th0,#3ch

mov tl0,#0b0h ;50ms

mov p1,#0feh

mov cnt,#20

setb et0

setb tr0

setb ea

sjmp $

t0isr:

clr tr0

mov th0,#3ch

mov tl0,#0b0h ;50ms

setb tr0

dec cnt

mov a,cnt

jnz t0isre

mov cnt,#20

mov a,p1

rl a

mov p1,a

t0isre:

retiend

「利用80c51微控制器的p1口作為輸出口連線到8只發光二極體,採用定時器t0中斷方式,控 10

4樓:

#include

unsigned char cont; /*宣告cont*/main()

}void int0() interrupt 1{th0=-50000/256;

tl0=-50000%256;

cont++;

微控制器(microcontrollers)是一種積體電路晶片,是採用超大規模積體電路技術把具有資料處理能力的**處理器cpu、隨機儲存器ram、只讀儲存器rom、多種i/o口和中斷系統、定時器/計數器等功能(可能還包括顯示驅動電路、脈寬調製電路、模擬多路轉換器、a/d轉換器等電路)整合到一塊矽片上構成的一個小而完善的微型計算機系統,在工業控制領域廣泛應用。從上世紀80年代,由當時的4位、8位微控制器,發展到現在的300m的高速微控制器。

5樓:匿名使用者

晶振 6mhz ,每機周 2 us t0 定時100ms ,計數5次,即可實現 500ms 定時。

計數值為 50000次。

#include

unsigned char cont; /*宣告cont*/main()

}void int0() interrupt 1以除錯通過。 努力啊!

51微控制器,c語言語句 p1^7=0,在組合語言中,能否如此位操作,改怎麼寫這條彙編語句?

6樓:做而論道

c語言語句 p1^7=0,

在組合語言中是,clr p1.7。

c語言語句 p1^7=1,

在組合語言中是,setb p1.7。

clr、setb,就是:清零、置位。

7樓:

要表示p1^7 =1,彙編更簡單

setb p1.7

8樓:匿名使用者

彙編中是位清除。clr p1^7

51微控制器定時器的問題。計算初值。程式的編寫問題。設fosc=12mhz。初值50ms。

9樓:匿名使用者

微控制器一個暫存器有256個單元共有256個地址,用兩位16進位制數表示,即儲存器的地址(00h~ffh)。儲存器中每個儲存單元可存放一個八位二進位制資訊。

就是說你想把一個大於2的8次方(即256)的初值裝進去得用到兩個暫存器,於是就有所謂的高八位暫存器th1和低八位暫存器tl1。tl1裝滿之後,向th1進1。

一個是c語言的方法,一個是彙編的方法。

多看看書吧。

10樓:天天奕想

微控制器定時器的方式一是一個十六位的定時器。但51微控制器是8位的,裝不下十六位資料,所以,想要用微控制器來裝一個十六位的數怎麼弄?微控制器提供了兩個暫存器(8位的)來裝這個十六位的數。

c語言中怎麼實現把一個十六位的數裝進兩個八位的暫存器裡?就是:

th1=(65536-50000)/256; //把(65536-50000)這個初值的高八位取出來,放在th1,用十六進位制表示是03ch

tl1=(65536-50000)%256; //把(65536-50000)這個初值的低八位取出來,放在tl1,用十六進位制表示是0b0h

在c語言中,直接寫

th1 = 0x3c;

tl1 = 0xb0;

效果跟th1=(65536-50000)/256; //給計數暫存器賦值,50毫秒時間

tl1=(65536-50000)%256;

一樣的。

區別在於一個人工算,直接賦值;一個交給微控制器去算。

80c51微控制器用兩個定時器實現佔空比不同的方波,採用組合語言,求教程式!謝謝

11樓:匿名使用者

hpulse equ 100 ;脈衝高電平計數值,修改這兩個值可以改變佔空比

lpulse equ 200 ;脈衝低電平計數值org 0000h

ljmp main

org 000bh

ljmp t0isr

org 001bh

ljmp t1isr

org 0030h

main:

mov tmod,#11h

mov th0,#high (65536-hpulse)mov tl0,#low (65536-hpulse)mov th1,#high (65536-lpulse)mov tl1,#low (65536-lpulse)setb tr0

setb tr1

setb ea

setb et0

setb et1

sjmp $

t0isr:

clr tr0

mov th0,#high (65536-hpulse)mov tl0,#low (65536-hpulse)setb tr0

setb p1.0

reti

t1isr:

clr tr1

mov th1,#high (65536-lpulse)mov tl1,#low (65536-lpulse)setb tr1

clr p1.0

retiend

12樓:匿名使用者

; 用一個 定時器0 實現佔空比可調 pwm 方波hpwm equ 100 ; 高電平計數值 改變 佔空比lpwm equ 200 ; 低電平計數值

pwmbz bit 20h ; 標誌位org 0000hljmp main

org 000bh

ljmp t0zd

org 0030h

main:

mov tmod,#02h

mov th0,#hpwm setb tr0setb ea

setb et0

sjmp $

t0zd:

jb pwmbz,t0zd2 mov th0,#hpwm setb pwmbz setb p1.0

reti

t0zd2: mov th0,#lpwm clr pwmbz clr p1.0

reti

當定時器T0用於方式1微控制器如何對定時器T0進行管理

其實你開啟了微控制器16位定時器,來判斷按鍵的中斷的話,就不需要在呼叫什麼延時程式 函式 了。方法很簡單,只要判斷中斷的次數就行了。因為只要開啟了定時器中斷,它每隔固定的時間就會響應中斷,在每次中斷中先判斷按鍵是否按下 然後判斷 是否是按鍵按下的首次中斷 如果是第一次中斷的話,就跳出中斷,繼續等待第...

微控制器定時器中斷功能和定時器定時功能有什麼區別,什麼情況需要中斷,什麼時候不需要呢,講好必採納

小灰狼 定時器的定時,就像你設定的鬧鐘,中斷,就像你設定的鬧鐘到點自動發出聲音。如果只是定時,不產生中斷,就需要你編寫的主程式經常去檢視定時的時間到了沒,而且就算檢視到定時時間到了,你也不知道是什麼時候到的,如果有中斷,則會自動跳到中斷函式執行你安排好的 鬧鐘發出聲音就是安排好的,也可以是震動 硬體...

ne555定時器用作定時器的電路圖

電阻r1 r2和電容c1構成定時電路。定時電容c1上的電壓uc作為高觸發端th 6腳 和低觸發端tl 2腳 的外觸發電壓。放電端d 7腳 接在r1和r2之間。電壓控制端k 5腳 不外接控制電壓而接入高頻干擾旁路電容c2 0.01uf 直接復位端r 4腳 接高電平,使ne555處於非復位狀態。擴充套件...