找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3008|回復: 0
打印 上一主題 下一主題
收起左側(cè)

求大神幫我看個程序。

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:42668 發(fā)表于 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空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表