找回密码
 立即注册

QQ登录

只需一步,快速开始

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

求高手帮忙指点程序哪出问题了

[复制链接]
跳转到指定楼层
楼主
ID:25279 发表于 2010-8-11 21:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

程序如下:

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit P0_0=P0^0;
sbit P0_1=P0^1;
sbit P0_2=P0^2;
sbit P1_4=P1^4;
sbit K1=P3^2;
sbit K2=P3^4;
uchar aa;


void main()
{
 P1_4=0;
 aa=0;
 
 TMOD=0x01;

 TH0=(65536-50000)/256;

 TL0=(65536-50000)%256;

 EA=1;
 ET0=1;
 TR0=1;
while(1)
{

  if(K1==0)
  {

   P1_4=0;
   P0_0=0;
  P0_1=0;
  }

    if(aa==100)  
       {
         aa=0;    
         P0_1=1;
         P0_2=0;
       }


         if(K2==0)
           {
             P1_4=0;
             P0_0=1;
             P0_2=1;
            }
 
 }
}
void timer0() interrupt 1
{
 TH0=(65536-50000)/256;
 TL0=(65536-50000)%256;
 aa++;
 }


我的原意是要程序如此执行:接通电源——(按键1按下——1、2号灯亮——延时5秒——2号灯灭3号灯亮——按键2按下——1、3号灯灭)括号内循环执行

可现在烧写后是这样执行的:接通电源——(延时5秒——3号灯亮——按键1按下——1、2号灯亮——延时5秒——2号灯灭——按键2按下——1、3号灯灭)括号内循环执行

       跟我的原意思不符,求哪位热心人帮忙指点指点程序哪能里出问题了?

 


 

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

使用道具 举报

沙发
ID:1 发表于 2010-8-11 22:57 | 只看该作者

你再加个uchar变量bb,用来记录1号键是否按下就行了,这是个超简单的问题了。 修改如下几行就搞定了.

  if(K1==0)
  {
   P1_4=0;
   P0_0=0;
   P0_1=0;
   bb=8;
  }

  if((aa==100)&&(bb==8))
     {
       aa=0;    
       P0_1=1;
       P0_2=0;
       bb=0;
      }
回复

使用道具 举报

板凳
ID:25279 发表于 2010-8-13 00:41 | 只看该作者

谢谢你了——ADMIN

我今天试了一下子,可能是我的编译器或是其它的什么原因,每次延时的时间不一样,但是如果在它一个周期结束后有按复位键的话,它会很标准,每次都是5秒。今天太晚了,我明天还要上班,等我明天弄懂了,再聊!

有你们的帮助,我会继续努力  。。。。。。对了,你有没有一些建议或资料可以给我的(最基础的),因为我C语言0基础,单片机0基础,编程0基础,电脑软硬件0基础,  哈

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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