导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→关于C51中使用XBYTE的问题

* 56559: 关于C51中使用XBYTE的问题

   guest 
guest发表的帖子 

 关于C51中使用XBYTE的问题
我将LED段码送到P0口,象使用外部器件那样使用P0口,,可是程序到XBYTE就无法通过,请问C51达人这是什么原因。小弟恭侯佳音。
以下是源程序:


#pragma SRC 
#include   <stdio.h>  
#include   <reg51.h>  
#define ture 1
#define false 0
#define add 0x0000
#define delay_value 3
#define delay_value_extra 10100
#define keyhh P2_0
#define keyhl P2_1
#define keymh P2_2
#define keyml P2_3
#define ledselhh P2_4
#define ledselhl P2_5
#define ledselmh P2_6
#define ledselml P2_7
sbit P2_0=P2^0;
sbit P2_1=P2^1;
sbit P2_2=P2^2;
sbit P2_3=P2^3;
sbit P2_4=P2^4;
sbit P2_5=P2^5;
sbit P2_6=P2^6;
sbit P2_7=P2^7;
void initial(void);
void keyscan(void);
void update(void);
void display(unsigned i,unsigned num);
void delay(short i);
unsigned char h1=0;
unsigned char h0=0;
unsigned char m1=0;
unsigned char m0=0;
unsigned char s1=0;
unsigned char s0=0;
unsigned char seg[10]={0Xe7,0X21,0Xcb,0X6b,0X2d,0X6e,0Xee,
                       0X23,0Xef,0X6f};
void main(void)
{initial();
for(;;)
{ keyscan();
delay(delay_value_extra);
update();
}
}
void initial(void)
{
P2_0=false;
P2_1=false;
P2_2=false;
P2_3=false;
P2_4=false;
P2_5=false;
P2_6=false;
P2_7=false;
}
void delay(short i)
{#pragma asm
push r7
push acc
   mov r7,#0ffh
delay:nop
       nop
       djnz r7,delay
       pop acc
       pop r7
#pragma endasm    
}
void keyscan(void)
{if  (keyhh==ture)
   { delay(delay_value);
     if (keyhh==ture)
        h1++;
   }
if (keyhl==ture)
  { delay(delay_value);
    if (keyhl==ture)
       h0++;  
   }
if (keymh==ture)
  { delay(delay_value);
    if (keymh==ture)
       m1++;    
   }
if (keyml==ture)
  { delay(delay_value);
    if (keyml==ture)
        m0++;   
   }
}
void update(void)
{if (s0==10)
    {s1++;s0=0;}
if (s1==6)
    {m0++;s1=0;}
if (m0==10)
    {m1++;m0=0;}
if (m1==6)
    {h0++;m1=0;}
if (h1==0|h1==1&&h0==10)
    {h1++,h0=0;}
    else if(h0==4)
           {h1++;h0=0;}
    end if;
if (h1==3)
    {h1=0;}
display(0,h1);
delay(delay_value);
ledselhh=false;
display(1,h0);
delay(delay_value);
ledselhl=false;
display(2,m1);
delay(delay_value);
ledselmh=false;
display(3,m0);
delay(delay_value);
ledselml=false;
}
display(unsigned i,unsigned num)
{switch(i)
   {  case 0:ledselhh=ture;
             xbyte[add]=seg[num]; 
             break;
      case 1:ledselhl=ture;
             xbyte[add]=seg[num];
             break;
      case 2:ledselmh=ture;
             xbyte[add]=seg[num];
             break;
      case 3:ledselml=ture;
             xbyte[add]=seg[num];
             break;
      default:break;
    }
}

发表时间:2004年6月15日11:01:26

  
回复该帖

本主题共有 1 帖,分页:>>>>>该主题的所有内容[1]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

[上一篇帖子]:用89C51的仿真器代,http://www.mcufan.com有150元就差个看门狗,一般仿真器
[下一篇帖子]:寻找并口的数字/电流转换芯片,请高手赐教?!