打印

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

[复制链接]
1632|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

粉丝