打印
[疑难问答]

编程序遇到一个问题?

[复制链接]
925|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
boy1990|  楼主 | 2015-10-25 21:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include "reg52.h"
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
sbit wei=P2^7;
sbit duan=P2^6;
sbit key=P3^2;
uchar bb,aa;
uchar code table1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
       0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar code table2[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

void delay(uint ms)
{
uint a,b;
for(a=ms;a>0;a--)
  for(b=110;b>0;b--);
}
void main()
{
uint aa,bb,num;
wei=1;
P0=0xfe;
wei=0;
while(1)
{
  aa=0xff;
  P3=aa;
  if(P3!=0xff)
  {
   delay(10);
   if(P3!=0xff)
   {
   bb=P3;
     
   switch(bb)
    {
    case 0x7f:num++;if(num==10) num=0;break;
    case 0xbf:num--;if(num==-1) num=9;break;
    case 0xef:num=0;break;
    case 0xfd:num=9;break;
    //default:num=0;break;
   
    }
   while(P3!=0xff);
   }
   delay(10);
   while(P3!=0xff);
  }

  duan=1;
  P0=table1[num];
  duan=0;
  if(key==0)    //用这两句可以识别
   num=9;       //用switch不行
}
}
为什么P3^2不起作用 ??
沙发
xia00| | 2015-10-25 21:56 | 只看该作者
不应该啊!找到问题了分享一下,很想知道原因!

使用特权

评论回复
板凳
毁灭2012| | 2015-10-26 21:11 | 只看该作者
delay(10);这是多长时间啊??

使用特权

评论回复
地板
zhuotuzi| | 2015-10-30 11:40 | 只看该作者
51程序非常简单。

使用特权

评论回复
5
玛尼玛尼哄| | 2015-10-30 13:00 | 只看该作者
写的太菜鸟了。

使用特权

评论回复
6
Snow7| | 2015-10-31 08:59 | 只看该作者
P3^2指向key,先看看按键正常吗

使用特权

评论回复
7
拉克丝| | 2015-10-31 09:12 | 只看该作者
  if(key==0)    //用这两句可以识别
   num=9;       //用switch不行
这个是干什么,为什么用switch不行

使用特权

评论回复
8
迪卡| | 2015-10-31 09:38 | 只看该作者
void delay(uint ms)
{
uint a,b;
for(a=ms;a>0;a--)
  for(b=110;b>0;b--);
}
这个延时准确吗

使用特权

评论回复
9
309030| | 2015-10-31 10:10 | 只看该作者
楼主具体是什么现象

使用特权

评论回复
10
boy1990|  楼主 | 2015-11-10 20:10 | 只看该作者
毁灭2012 发表于 2015-10-26 21:11
delay(10);这是多长时间啊??

还有一个的delay()延时函数,我忘加进去了,delay(10)表示延时1s。

使用特权

评论回复
11
boy1990|  楼主 | 2015-11-10 20:11 | 只看该作者
zhuotuzi 发表于 2015-10-30 11:40
51程序非常简单。

可是我觉得不简单

使用特权

评论回复
12
boy1990|  楼主 | 2015-11-10 20:12 | 只看该作者
拉克丝 发表于 2015-10-31 09:12
if(key==0)    //用这两句可以识别
   num=9;       //用switch不行
这个是干什么,为什么用switch不行 ...

这个表示判断,如果是0就让它显示9

使用特权

评论回复
13
boy1990|  楼主 | 2015-11-10 20:12 | 只看该作者
迪卡 发表于 2015-10-31 09:38
void delay(uint ms)
{
uint a,b;

不是0.1S吗?

使用特权

评论回复
14
cjh168| | 2015-11-11 13:31 | 只看该作者
:L:L这程序写得,蛋疼~

使用特权

评论回复
15
zhuotuzi| | 2015-11-12 14:25 | 只看该作者
  case 0x7f:num++;if(num==10) num=0;break;
    case 0xbf:num--;if(num==-1) num=9;break;
通过case语句做到,很高效率。

使用特权

评论回复
16
CallReceiver| | 2015-11-13 22:55 | 只看该作者
用switch case 选择性判断比较好

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

81

主题

1769

帖子

2

粉丝