打印
[其它应用]

进不了了中断

[复制链接]
1273|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chenho|  楼主 | 2022-4-17 19:15 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
TI, AN, ic, ICT, timer, DP
IRQ        EQU    01H

TM0        EQU    02H

TM1        EQU    03H
TL0        EQU    04H
TH0        EQU    05H
PROGRAMME:
          ORG    0000H
          JMP RESET
          RTNI   
         JMP TIMER0_INT              ;T1 INT THEN GO TO T1_INT
         RTNI      
          RTNI
RESET:
     NOP
     NOP
     NOP
     NOP
     NOP
     NOP
     NOP
     NOP
     NOP
     NOP
CLEARRAM:                      ;CLEAR RAM 020H-3AFH,
     LDI    DPH        ,07H
     LDI    DPM        ,02H
    LDI    DPL        ,0FH
    LDI    WDT        ,1100B         ;CLR  WDT     WDT=64ms   
?CLinx:
    LDI    INX        ,00H
    CALL   DataPointDec
    LDA    DPH        ,BANK0
    OR     DPM        ,BANK0
    BNZ    ?CLinx
;--------------------------------------------------------         
     LDI    WDT          ,1100B         ;CLR  WDT     WDT=64ms
;--------------------------------------------------------

    LDI    PAOUT        ,1111B         ;set PA output
     LDI    PORTA        ,1111B   
    LDI    PFOUT        ,1111B         ;set PF output
     LDI    PORTF        ,1111B   
    LDI    TMP01        ,1111B
     STA    PIOUT        ,BANK7         ;set PI output
     LDI    TMP01        ,1111B
     STA    PORTI        ,BANK7   
   
    ;-----------------------------
     LDI    TM1           ,1111B
     LDI    TM0          ,0111B          ;T1RM=1111B--; 1/1       ;T1RM=1110B--;1/2 ;CLOCK/4
     LDI    TL0          ,06H            ;T1RL=06H   
    LDI    TH0          ,00H            ;T1RH=00H----; /250      ;T1RH=08H----;/125
     LDI    IRQ          ,0000B
     LDI    IE           ,1000B          ; T1 INTERRUPT ENABLE
     LDI    PA_BUF       ,0FH
     LDI    PF_BUF       ,0FH
     LDI    PI_BUF       ,0FH
;========================================================
;                  main  programme
;========================================================
MAIN:
     LDI    WDT          ,1100B         ;CLR  WDT     WDT=64ms
     JMP    TIME_CLOCK
RE_TIME_CLOCK:
JMP     KEY_SCAN  
RE_KEY_SCAN:
     JMP   KEY_PROCESS   
RE_KEY_PROCESS:

    JMP    DISPLAY
RE_LED_DISP:
     NOP
     NOP
     NOP
     NOP
     JMP    MAIN   
;========================================================
;数据指针减一子程序
;========================================================
DataPointDec:
    SBIM    DPL        ,01H
     EOR     DPL        ,BANK0
     SBCM    DPM        ,BANK0
     EOR     DPM        ,BANK0
     SBCM    DPH        ,BANK0
    RTNI
;=================================================
;timer0中断服务子程序
;=================================================TIMER0_INT:
     STA    ACC_BUF      ,BANK0  ;备份ACC的值
     LDI    IRQ  ,00H         ;清TIMER0中断请求标志
     ;-----------------------------   
COUNT_1MS:
     ADIM   CT0_1MS      ,01H
     SBI    CT0_1MS      ,04H
     BNZ    COUNT_5MS
     LDI    CT0_1MS       ,00H
     ORIM   TIME_FLAG    ,0001B         ;设置“1ms到”标志
COUNT_5MS:   
    ADIM   CT0_5MS      ,01H         ;5ms计数
    LDI    TMP_T0       ,00H
     ADCM   CT1_5MS      ,BANK0         ;5ms计数
     SBI    CT0_5MS      ,04H
     BNZ    TIMER1_INT_END
     SBI    CT1_5MS      ,01H
     BNZ    TIMER1_INT_END
     ORIM   TIME_FLAG    ,0010B         ;设置“5ms到”标志
     ORIM   CLOCK_FLAG   ,0001B         ;设置时钟计时的5ms标志位   
    LDI    CT0_5MS      ,00H         ;重置5ms计数器
     LDI    CT1_5MS      ,00H         ;重置5ms计数器
     ;-----------------------------
     ADIM   CT0_200MS    ,01H
     LDI    TMP_T0       ,00H
     ADCM   CT1_200MS    ,BANK0
     SBI    CT0_200MS    ,08H
     BNZ    TIMER1_INT_END
     SBI    CT1_200MS    ,02H
     BNZ    TIMER1_INT_END
     ORIM   TIME_FLAG    ,0100B         ;设置“0.2s到”标志   
    LDI    CT0_200MS    ,00H         ;重置0.2S计数器
     LDI    CT1_200MS    ,00H         ;重置0.2S计数器
     ;-----------------------------
TIMER1_INT_END:
     LDI    IE           ,1000B          ;打开timer0中断
     LDA    ACC_BUF      ,BANK0         ;返回ACC的值
     RTNI
进不了了

使用特权

评论回复
沙发
dingy| | 2022-4-17 19:18 | 只看该作者

LDI    IE           ,1000B          ; T1 INTERRUPT ENABLE
这样打开的不是TIMER0中断,是最高位的中断,即入口地址的RTNI.

使用特权

评论回复
板凳
huangchui| | 2022-4-17 19:20 | 只看该作者
打开TIMER0中断啊

使用特权

评论回复
地板
jlyuan| | 2022-4-17 19:23 | 只看该作者
改为  LDI   IE,0100B    就行了

使用特权

评论回复
5
chenho|  楼主 | 2022-4-17 19:25 | 只看该作者
那我要time1和time0同时打开 IE应该怎么设置?

使用特权

评论回复
6
stly| | 2022-4-17 19:29 | 只看该作者

改为  LDI   IE,1100B    ;这样才是打开TIMER1,TIMER0中断.

使用特权

评论回复
7
chenho|  楼主 | 2022-4-17 19:30 | 只看该作者

IE  的第二位是time1的控制位
我用的是69p55的单片机,它定义IE为第一位是time0第二位是time1第三位是time2

使用特权

评论回复
8
xxrs| | 2022-4-17 19:33 | 只看该作者

使用特权

评论回复
9
heweibig| | 2022-4-17 19:38 | 只看该作者
IE寄存器的bit3是定时器0允许标志,bit2是定时器1允许标志,bit1是定时器2的允许标志,bit0是端口中断,AD中断,按键中断允许标志。

使用特权

评论回复
10
jiajs| | 2022-4-17 19:41 | 只看该作者
楼上说得对,如果要开启定时器0中断,只要将IE设置为1000b就可以了。

使用特权

评论回复
11
zhenykun| | 2022-4-17 19:43 | 只看该作者

又是粘代码的
眼晕

使用特权

评论回复
12
stly| | 2022-4-17 19:46 | 只看该作者
居然还有人还玩汇编

使用特权

评论回复
13
juventus9554| | 2022-4-17 19:48 | 只看该作者
改为  LDI   IE,0100B   

使用特权

评论回复
14
chenho|  楼主 | 2022-4-17 19:52 | 只看该作者
多谢大家讨论这么多哈,呵呵

使用特权

评论回复
15
lidi911| | 2022-4-21 20:07 | 只看该作者
汇编忘的差不多了。

使用特权

评论回复
16
天意无罪| | 2022-4-25 08:16 | 只看该作者
进不了中断,要么中断配置有问题,要么就是压根儿没有产生触发中断的条件。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

748

主题

9853

帖子

5

粉丝