搜索
bottom↓
回复: 8

求大侠帮忙调程序

[复制链接]

出0入0汤圆

发表于 2012-10-30 11:08:27 | 显示全部楼层 |阅读模式
本帖最后由 巴豆定心 于 2012-10-30 11:14 编辑

程序说明:key1 key2组合计数:按过key1后再按key2加计数;按过key2后再按key1减计数;key3清零;问题是仿真时出现偶尔不显示,或显示不正常,跪谢各位大侠!

#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code smg_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar code smg_we[]={0x01,0x02,0x04};
uchar buffer[]={0,0,0};
uint k,n;
int M=10;
void csh();
void jia();
void jian();
void zhiling();

sbit key1 = P3^0;
sbit key2 = P3^1;
sbit key3 = P3^2;

void csh()
{
  TMOD= 0x01;
  TH0=(65536-5000)/256;
  TL0=(65536-5000)%256;
  EA=1;
  ET0=1;
  TR0=1;
}
void delay(uint  t)
{
uchar j;
while(t--);
for(j=0;j<119;j++);
}

void show()
{
   uchar i;
   buffer[0]=M%100%10;
   buffer[1]=M%100/10;
   buffer[2]=M/100;


  
   for(i=0;i<3;i++)
   {
            P1=smg_du[buffer];
         P2=smg_we;
         delay(3);
         P2=0x00;                  
  }
}
void main ()
{
        csh();
        key1=key2=key3=1;
        k=1;n=0;
        while(1)
        {
           //jia();
           if(k==1&n==0)
           {
           jia();}else{          
           jian();        }                  

           zhiling();
        }
}
void timer0 () interrupt 1
{
  TH0=(65536-5000)/256;
  TL0=(65536-5000)%256;
  show();
}
void jia()
{
    if(key1==0)
  {
    delay(10);
        if(key1==0){k=1;while(!key1);}
   }
   if(key2==0&k==1)
  {
   delay(10);
   if(key2==0&k==1){k=0;M++;while(!key2);}
  }
}
void jian()
{   
if(key2==0)
  {
    delay(10);
        if(key2==0){n=1;while(!key2);}
   }
   if(key1==0&n==1)
  {
   delay(10);
   if(key1==0&n==1){n=0;M--;while(!key1);}
  }

}
void zhiling()
{
  if(M<0){M=0;}
  if(key3==0)
  {
          delay(10);
        if(key3==0){M=0;}
  }
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2012-10-30 11:24:30 | 显示全部楼层
本帖最后由 Lhl 于 2012-10-30 11:31 编辑

void show()
{
   uchar i;
   buffer[0]=M%100%10;
   buffer[1]=M%100/10;
   buffer[2]=M/100;


  
   for(i=0;i<3;i++)
   {
            P1=smg_du[buffer];
         P2=smg_we;
         delay(3);
         P2=0x00;                  
  }
}

中    P1=smg_du[buffer]; P2=smg_we;改成   P1=smg_du[buffer]; P2=smg_we; 试试
if(k==1&n==0)  是  if((k==1)&&(n==0))

奇怪, buffer,和smg_we,中数组下标显示不出来

出0入0汤圆

 楼主| 发表于 2012-10-30 11:39:15 | 显示全部楼层
显示函数应该没问题,系统显示不出来
&与&&有什么不一样吗?

出0入0汤圆

 楼主| 发表于 2012-10-30 11:44:17 | 显示全部楼层
我试过了,还是不好使啊,求救啊

出0入0汤圆

 楼主| 发表于 2012-10-30 11:46:54 | 显示全部楼层
主程序逻辑是不是不清啊,还有没有更好的算法啊

出0入0汤圆

发表于 2012-10-30 11:59:14 | 显示全部楼层
试试这个。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2012-10-30 13:24:39 | 显示全部楼层
Lhl 发表于 2012-10-30 11:59
试试这个。

太深奥了,我研究研究啊,呵呵,谢谢你啊

出0入0汤圆

 楼主| 发表于 2012-10-31 16:42:50 | 显示全部楼层
谢谢六楼的朋友,在你指导的基础上我做出来了。

出0入0汤圆

发表于 2012-10-31 17:50:55 | 显示全部楼层
巴豆定心 发表于 2012-10-30 11:39
显示函数应该没问题,系统显示不出来
&与&&有什么不一样吗?

&与&&不一样。&是位与 &&是逻辑与
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 14:20

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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