导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→初学者:急急!!!可以用T0触发外部中断INT1吗?[懒虫]

 *第8892篇: 初学者:急急!!!可以用T0触发外部中断INT1吗?

  
楼 主:懒虫 2003年3月8日08:34
 初学者:急急!!!可以用T0触发外部中断INT1吗?
硬件:89C52,22.1184MHz晶振,T0和INT1设为高优先级。思路:一旦触发T0,
在T0中断服务程序中启动INT0定时采样外部数据。我在调试时,就是不能启动
INT1。不知道怎么回事
  
2楼:红心J 2003年3月8日11:53
 真懒,话都懒的说清楚
按我的理解,您是说:
“t0进入中断服务程序中时,能响应int0中断请求,但不能响应int1中断请求”。
如是,原因在于int0中断优先级大于t0,而int1中断优先级小于t0。
解决:(1)将int0,int1设为高优先级,t0为低优先级。
      (2)不设高优先级,将t0的工作交给t1做。
  
3楼:懒虫 2003年3月8日12:29
 呵呵,你说话真逗,不是这样的,当然,我没有说明白
有一个信号进来,有固定格式,一个起始字节,10个ASC码数据,然后是一个校验字节,最
后是结束代码。现在需要采集这个数据。我用的是INT0检测开始的下降沿,然后利用INT0的
中断服务程序启动T0进行定时采样。在T0中断服务程序中,一是进行定时参数的重装载,另
外产生一个下降沿,通过P2.2脚输出。P2.2脚接到INT1脚上。我想利用这个下降沿来触发
INT1中断。INT1中断服务程序完成采样数据的工作。目前,INT0和T0都能正常工作,可是
INT1不能中断
  
4楼:懒虫 2003年3月8日13:23
 是不是刚才我说错了,怎么没人理我啦?我真的很着急啊
  
5楼:懒虫 2003年3月8日13:46
 这是程序,大家看看有何问题?
......
MAIN:
......
       ;设置INT0
                
                 SETB      TCON.0                                  ; IT0=1,边沿
触发
                 SETB      IP.0                                    ; PX0=1,设
INT0为高优先级
               
       ;-------------------------------------------------
       
       ;  设置INT1
       
                 SETB      TCON.2                                  ; IT1=1,下降
沿触发
                 SETB      IP.2                                    ; PX1=1,设
INT1为高优先级
                 SETB      P2.2
......
                 SETB        ET0                                   ; 允许T0中断
                 SETB        EX0                                   ; 允许INT0中

                 SETB        EX1
                 SETB        ES                                    ; 允许串行口
中断
                 SETB        EA                                    ; 开中断
.....


;*******************************************************************************

;  外部中断INT0


INT_INT0:

                 MOV       17H,#00H                                ;  清除T0中断
次数
                 INC       10H                                     ;  累计INT0中
断次数
                 INC       11H                                     ;  地址指针
       ;-----------------------------
       
       ;  关闭INT0中断允许
       
                 CLR       EX0
                 SETB      EX1
       ;-----------------------------
       ;  启动T0
                 MOV       TH0,#0FFH                               ;  定时104us
(22.1184MHz晶振,16位计数器)
                 MOV       TL0,#30H
                 
                 SETB      TR0                                     ;  启动T0
                 SETB      ET0
       
                 RETI
                 
;*******************************************************************************

;  定时器中断T0


INT_T0:

       ;  重新装载定时常数:定时104us(22.1184MHz晶振,16位计数器)----此处没有修
正时间参数??
       
       
                 MOV       TH0,#0FFH
                 MOV       TL0,#50H
                 
                 SETB      ET0
                 SETB      TR0
                 
                 CLR       P2.2
                 NOP
                 NOP
                 NOP
                 NOP
                 NOP
                 NOP
                 SETB      P2.2

                 
                 RETI

  
6楼:懒虫 2003年3月8日13:55
 简单一点说,这是一个随机发生的事情,只是传送方式很固定,为9600,n,8,2
但是,由于随机发生,所以,要用中断来完成。另外,我对于时序问题很头痛,为了偷懒计
算时间的补偿问题,索性采用T0产生下降沿信号,触发INT1定时采用外部信号

>>>>>>对该主题发表你的看法

本主题贴数6,分页: [第1页]


[上一篇主题]:硬件:求救!請問那位大蝦知道有8個輸出PWM IC型號或資料?

[下一篇主题]:硬件:LCD? 请问各个大侠我想要作一个单片机的系统我想用LCD。但不知道该选哪种LCD。