大家帮看看好吗,我的8251中断怎么一点反映都没有啊

[复制链接]
2754|1
 楼主| ccjchen 发表于 2007-3-3 10:50 | 显示全部楼层 |阅读模式
这是我编的第一个程序,但是都快一个月了,还是没有反应,请大家一定帮看看啊!其中硬件部分是没有问题的,因为有人用汇编实现过这个程序是用8251扩展串口与电脑通信,其中用8251的Txrdy和Rxrdy或非产生中断信号接89C52的T0端
#define _TEST_C_
#include "reg52.h"
#include "stdlib.h"
#include "absacc.h"
#include "intrins.h"
#include "test.h"

#define uchar unsigned char
#define uint  unsigned int
#define COM8251 XBYTE[0x8701]
#define DAT8251 XBYTE[0x8700]
uchar data_temp[10]={0xAA,10,22,32,0,0};
uchar  i = 0;
uchar s;
void  initmcu(void);
void  wait(uchar p,q);
                            
void Trans8251()  interrupt 1 using 2
{
    do
       {
         s = COM8251;
       }while((s&0x01)==0);
       
       DAT8251 = data_temp;//写
       i++;
    if (i==4)
       {
         i = 0;
       } 

}
void main(void) 
{  
    EA = 0;
      
    wait(11,82);//8251工作速度慢,每送一个控制字,等待一会儿延时2ms
    COM8251 = 0x00;
    wait(11,82);
    COM8251 = 0x00;
    wait(11,82);
    COM8251 = 0x00;
    wait(11,82);
    COM8251 = 0x40;//以上为8251复位部分
    wait(11,82);
    COM8251 = 0x4e;//9600baud,1停止位,无校验,8位数据,X16
    wait(11,82);
    COM8251 = 0x37;  
    initmcu();
    EA = 1;
    
  
}

void  wait(uchar p,q)
{
   uchar  i,j;                //(2*j+3)*i+4
   for (i=p;i>0;i--)
      for (j=q;j>0;j--);
}

void  initmcu(void)
{
     TMOD = 0x06;     //9600波特11.0592MHz,方式2
     TL0  = 0XFF;    TH0 = 0XFF;    
     IT0 = 0;    IP  = 0x02; TR0 = 1;ET0 = 1;
}


 楼主| ccjchen 发表于 2007-3-3 14:26 | 显示全部楼层

大哥们,救救我吧

我又在  中断中加了TH0  = 0XFF;TL0  = 0XFF;这两句话重载计数初值依然没反应,天了,救救我吧!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

175

主题

446

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部