找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2677|回复: 0
打印 上一主题 下一主题
收起左侧

求大神帮我看个程序。

[复制链接]
跳转到指定楼层
楼主
ID:42668 发表于 2012-7-10 16:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

为什么给串口送的都是0。

#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar a ,b;
uchar code table[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};
sbit dula = P2^6;
sbit wela = P2^7;
void Key_Scan();
void xianshi();
void fa_jian(uchar Num);
uchar KeyNo = 16;
uchar Pre_KeyNo = 16;
uchar Timer = 0 ,flag = 0;
void delayms(uint ms)
{
   uint i,j;
   for(i = ms;i > 0;i --)
     for(j = 110;j > 0;j --);
}
void init()
{
   TMOD = 0x21;    //开定时器T0工作方式1于T1工作方式2
   TH0 = (65536 - 5000)/256;
   TL0 = (65536 - 5000)%256;  //设置5ms初值
   TR0 =1; //启动定时器0
   ET0 = 1;     //开定时器中断0
   TH1 = 0xfd;
   TL1 = 0xfd;  //设置波特率为9600bps
   TR1 = 1;    //启动定时器2
   REN = 1;  //允许串口接收
   SM0 = 0;
   SM1 = 1;  //设置串口工作方式1
   EA = 1;    //开总中断
   ES = 1;    //开串口中断
}
void main()
{
   init();
   while(1)
  {
    if(flag == 1)
 {
 flag = 0;
 xianshi();    
   fa_jian(KeyNo);
      
  }       
   }
}

void Key_Scan()
{
   uchar Tmp;
   P3 = 0x0f;
   delayms(1);
   Tmp = P3^0x0f;
   switch(Tmp)
   {
      case 1: KeyNo = 0; break;
   case 2: KeyNo = 1; break;
   case 4: KeyNo = 2; break;
   case 8: KeyNo = 3; break;
  default:  KeyNo = 16;
   }
   P3 = 0xf0;
   delayms(1);
   Tmp = (P3 >> 4) ^ 0x0f;
   switch(Tmp)
   {
       case 1: KeyNo += 0; break;
    case 2: KeyNo += 4; break;
    case 4: KeyNo += 8; break;
    case 8: KeyNo += 12;           
   }
}
void ser() interrupt 4
{
   if(RI == 1)
   {
    RI = 0;
  // a = SBUF;
   }  
}

void fa_jian(uchar Num)
{
    ES = 0;
    SBUF = Num;
    while(!TI);
    TI = 0;
    ES = 1;
}

void xianshi()
{
      P3 = 0xf0;
   if(P3 != 0xf0)  Key_Scan();
   if( KeyNo < 16)
   {
    dula = 1;
    P0 = table[KeyNo];
    dula = 0;
    P0 = 0xff;

    wela = 1;
    P0 = 0xfe;
    wela = 0;
    delayms(5);
    }

void T0_Timer() interrupt 1
{
   TH0 = (65536 - 5000)/256;
   TL0 = (65536 - 5000)%256;
   if(++Timer == 20)
   {
      Timer = 0;
   flag = 1;
   }
}    

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表