微控制器中斷實驗,微控制器定時器中斷實驗 程式(組合語言)不要c語言的

2022-11-03 19:06:13 字數 3047 閱讀 9886

1樓:匿名使用者

include//包含52微控制器暫存器定義的標頭檔案

/*******************************************

函式功能:主函式

******************************************/

void main(void)

函式功能:外中斷t0的中斷服務程式

void int0(void) interrupt 0 //外中斷0的中斷編號為0

這是一個外中斷led實驗,你看看吧

2樓:多美的新一天

中斷實驗有幾種,譬如外部中斷0,1,定時器中斷(0,1),串列埠中斷

3樓:董衛衛

include

void main(void)

void int0(void) interrupt 0

微控制器定時器中斷實驗 程式(組合語言)不要c語言的

4樓:匿名使用者

;假定晶振頻率12m

;假定p1口對應接8個led,且高電平有效

;mcu:8051系列

cont_disp equ 30h ;定義查表的計數變數,用於8個led燈的顯示狀態

cont_int equ 31h ;定義中斷間隔的計數變數,用於控制20箇中斷為1秒的時間間隔

org 00h

ajmp go

org 0bh

ajmp int0_1 ;定時器0,工作方式1

go:mov sp,#60h

mov p1,#00h ;p1口初始全部關閉

mov cont_disp,#8 ;查表取led點亮狀態,注意此處為了減少變數,查表採用從尾到首的順序,所以初始值為表末位數

mov tmod,#01h ;定時器工作方式1

mov th0,#0bh

mov tl0,#3ch ;計數器初始設定,中斷間隔為50ms

setb tr0

setb et0

setb ea ;計數器開始工作

loop: ;以下幾句為不斷為p1口送值,點亮相應的led

mov a,cont_disp

mov dptr,#tab

movc a,@a+dptr

mov p1,a

ajmp loop

;----------------以下為中斷處理程式---------------

int0_1:

push acc ;保護現場

mov th0,#0bh

mov tl0,#3ch ;定時器初值重灌

djnz cont_int,retint

mov cont_int,#20 ;20箇中斷判定

djnz cont_disp,retint ;每20箇中斷,即1秒,查表數減1

mov cont_disp,#8 ;到1再迴圈

retint:

pop acc

reti

tab:

nopdb 00h,0ffh,0aah,55h,0a0h,50h,0ah,05h ;注意此表為從尾倒查式, 上面一句nop不可少.end

5樓:做而論道

下列程式,已經經過實驗,可以滿足題目要求.

org 0000h

sjmp main

org 000bh

sjmp t0_int

main:

mov tmod, #01h ;t0定時方式1

mov th0, #(65536-50000) / 256 ;定時50ms@12mhz

mov tl0, #(65536-50000) mod 256 ;

setb tr0 ;啟動t0

mov ie, #82h ;開中斷

;第一秒鐘l0,l2亮,第二秒鐘l1,l3亮,第三秒l4,l6亮,第四秒鐘l5,l7亮,

;第五秒l0,l2,l4,l6亮,第六秒鐘,l1,l3,l5,l7亮,第七秒鐘八個二極體全亮,第八秒鐘全滅.

mov 30h, #11111010b

mov 31h, #11110101b

mov 32h, #10101111b

mov 33h, #01011111b

mov 34h, #10101010b

mov 35h, #01010101b

mov 36h, #00000000b

mov 37h, #11111111b

mov r0, #30h

mov r7, #20

m_loop:

sjmp m_loop ;無限迴圈

t0_int:

mov tl0, #(65536-50000) mod 256 ;

mov th0, #(65536-50000) / 256 ;定時50ms@12mhz

djnz r7, t0_end

mov r7, #20

mov p1, @r0

inc r0

cjne r0, #38h, t0_end

mov r0, #30h

t0_end:

reti

end ;完

6樓:怪咖小小魚

#include

typedef unsigned int uint;

typedef unsigned char uchar;

uint n=0;

uint i=0;

uint led=;

void main() }

void time0() interrupt 1 using 1}

7樓:匿名使用者

我千言萬語,不知從何說起。我最敬愛是***。

微控制器 外部中斷實驗 使用at89c51

微控制器中斷問題,51微控制器外部中斷問題

不太明白你問的問題。t0還有空間呢?如果想在t0中斷內增加程式,也是可以的,長度和t0沒有關係,只要微控制器的儲存空間夠就可以了。儘量不要在中斷中執行程式,會影響整個流程的合理性。所以一般只在中斷中設定標誌。微控制器的中斷入口都是排列在地址的最低端的,分別為0003,000b,0013,001b,0...

微控制器中斷 的interrupt 0 using 1中的us

看到樓上二位說的有誤,特糾正。void int0 interrupt 0 using 1 interrupt 0 指明是外部中斷0 interrupt 1 指明是定時器中斷0 interrupt 2 指明是外部中斷1 interrupt 3 指明是定時器中斷1 interrupt 4 指明是序列口中...

51微控制器定時器初值公式中的256是什麼

256換成十六進位制數就是ffh,也就是一個位元組數全部計滿時的資料!手打不易,如有幫助請採納,謝謝!用方式1時,16位的初值要分解成高8位 低8位,分別存放到 th0 tl0。對256求模,也就是除以 256 得到的整數商,這就是高八位。對256求餘,也就是除以 256,得到的餘數,這就是低八位。...