51单片机汇编语言定时器的使用(中断方式)

用汇编语言写51单片机的程序:
(1)选择定时器T1为工作方式1,产生100ms定时,使P2口的八个发光二极管循环点亮。
(2)选择定时器T1为工作方式2,产生100ms定时,使P2口的八个发光二极管循环点亮。
12MHz晶振

(1)
COUNT_INT    EQU 30H
LEDVALUE    EQU 31H
    ORG 0000H
    LJMP START
    ORG 001BH
    LJMP Timer1Interrupt

START:
    MOV SP,#60H
    MOV COUNT_INT,#0 
    MOV LEDVALUE,#01H
    LCALL InitTimer1

LOOP:
     MOV A,LEDVALUE
     MOV P2,A
    LJMP LOOP

InitTimer1:
    MOV TMOD,#10H;定时器T1为工作方式1,产生50ms定时
    MOV TH1,#3CH
    MOV TL1,#0B0H
    SETB EA
    SETB ET1
    SETB TR1
    RET

Timer1Interrupt:
    PUSH DPH
    PUSH DPL
    PUSH ACC
    MOV TH1,#3CH
    MOV TL1,#0B0H
    ;========================
     INC COUNT_INT
     MOV A,COUNT_INT;每50ms加1,
     CJNE A,#2,Timer1Interrupt_EXIT;100ms
     MOV COUNT_INT,#0
     MOV A,LEDVALUE
     RL A
     MOV LEDVALUE,A
     ;========================
Timer1Interrupt_EXIT:    
    POP ACC
    POP DPL
    POP DPH
    RETI

END

(2)
COUNT_INT_L    EQU 30H
COUNT_INT_H    EQU 31H
LEDVALUE    EQU 32H
    ORG 0000H
    LJMP START
    ORG 001BH
    LJMP Timer1Interrupt

START:
    MOV SP,#60H
    MOV COUNT_INT_L,#0 
    MOV COUNT_INT_H,#0
    MOV LEDVALUE,#01H
    LCALL InitTimer1

LOOP:
     MOV A,LEDVALUE
     MOV P2,A
    LJMP LOOP

InitTimer1:
    MOV TMOD,#20H;定时器T1为工作方式2,产生250us定时
    MOV TH1,#00H
    MOV TL1,#06H
    SETB EA
    SETB ET1
    SETB TR1
    RET

Timer1Interrupt:
    PUSH DPH
    PUSH DPL
    PUSH ACC
    MOV TH1,#00H
    MOV TL1,#06H
    ;========================
     INC COUNT_INT_L
     MOV A,COUNT_INT_L;每250us加1,
     CJNE A,#40,Timer1Interrupt_EXIT;250US*40=10ms
     MOV COUNT_INT_L,#0
     INC COUNT_INT_H
     MOV A,COUNT_INT_H;每10Ms加1,
     CJNE A,#10,Timer1Interrupt_EXIT;10ms*10=100MS
     MOV COUNT_INT_H,#0
     MOV A,LEDVALUE
     RL A
     MOV LEDVALUE,A
     ;========================
Timer1Interrupt_EXIT:    
    POP ACC
    POP DPL
    POP DPH
    RETI

END

温馨提示:内容为网友见解,仅供参考
无其他回答

51单片机,用定时器中断,在P1口实现1S移动一次的流水灯,用汇编语言编写...
\/\/晶振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!

51单片机编程题,用汇编语言怎么做?
在8051单片机的时钟频率为6MHz,那么定时器的计数脉冲周期就是 2uS;sbit CP=P1^0;void Timer0_init(){ TMOD |=0x01; \/\/T0定时器,方式1,采用16位定时器 TH0 = (65536-500)\/256; \/\/定时器装初值500, 即 1000uS 中断一次 TL0 = (65536-500)%256;EA=1; ET0=1; TR0=1;} ...

51单片机定时器的汇编语言程序编程,
这么简单的要求,不用大动干戈。看看下面的程序,是不是最简单:ORG 0000H SETB TR0 ;启动T0 MOV R2, #250 ;定时计数初值 LOOP:MOV TH0, #(8192 - 8000) \/ 32 ;定时8ms MOV TL0, #(8192 - 8000) MOD 32 JNB TF0, $ ;等待8ms CLR TF0 DJNZ R2, ...

.已知51单片机系统晶振频率为12MHz,请利用定时器1工作方式1,中断方式...
MOVTMOD,#10H;设置T1定时方式1 MOVTH1,#(65536-50000)\/256;送入初始值。MOVTL1,#(65536-50000)MOD256;定时50000us@12MHz MOVIE,#10001000B;开放总中断和T1中断。SETBTR1;启动T1 MOVTH1,#(65536-50000)\/256;重新送入初始值。MOVTL1,#(65536-50000)MOD256;定时50000us@12MHz R...

单片机定时器和中断初始化流程是什么样的啊?还有就是TMOD和SCON的初值是...
定时器工作的流程可以按照这个顺序(以51为例用定时器0方式一产生50毫秒的定时)1、确定使用哪个定时器,使用哪种方式,这一步通过TMOD设置,TMOD的低四位是设置定时器0的,高四位是用来设置定时器1的,其中的M0,M1是用来设置定时器工作在哪种方式,GATE一般用不要设置,C\/T是选择计数模式还是定时...

51单片机定时器中断函数返回和普通函数返回的细节
汇编语言里面,没有“函数”这个词汇。定时器0只是在TR0为零的时候,才停止;在其它的任何期间,不停。加一计数到FFFFH,再加一,将产生溢出标志TF0,计数值变成0000H。定时器0溢出标志TF0在中断响应的时候,自动清零。(T2例外)。中断响应,只有PC自动压栈。调用子程序,也是只有PC自动压栈。--- 做...

关于at89c51单片机 定时中断的问题
用T0定时器定时50ms,采用中断方式,对中断计数20次,就是1秒,再对1秒计数就可以了。其次是显示出计时的秒即可。这个提问有这么多灌水的回答,而且也网友采纳了。你能采纳了,用私信发给你程序。仿真图如下

c51单片机中断程序中的interrupt1,2,3是由什么决定的?
1、INT0——外部中断0,由P3.2端口引入,低电平或下降沿引起。默认优先级最高。2、INT1——外部中断1,由P3.3端口引入,低电平或下降沿引起。默认优先级第二。3、T0——定时器\/计数器0中断,由T0计数器计满回零引起。默认优先级第三。4、T1——定时器\/计数器1中断,由T1计数器计满回零引起...

设MCS-51单片机使用的晶振是12MHz,欲使用定时器\/计数器1实现50ms定时中...
一、使用方式一:晶振频率为12MHz,机器周期为1us,50ms时间需要计数50000次,故计数器初值为(65536-50000),65536是因为方式一中,定时\/计数器的最大值为65536(2^16),当然写程序时不一定非要这么计算,因为定时\/计数器是溢出产生中断,也就是从最大加1就溢出,最大加1就是等于0的,只要计数个...

...在中断函数里关掉当前中断并且打开或关上定时器。比如:
1、在中断服务程序里,关闭中断允许标志当然可以(只是这个中断暂时被关闭了,如果在其他程序中没有开启中断,则这个中断服务程序不会再被执行),同样也可以启停定时器。看了你的追问,我觉得你的要求完全可以实现,只是在编程的时候,要细致一些,把逻辑理清楚就可以了。我以前做过一个出租车计价器,里程数据也是从外部中断...

相似回答