找回密码
 立即注册

QQ登录

只需一步,快速开始

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

请教一下,这个程序,哪里有问题?执行几步就不动

[复制链接]
跳转到指定楼层
楼主
ID:97678 发表于 2020-1-7 18:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit B1 = P0^0;
sbit G1 = P0^1;
sbit R1 = P0^2;
sbit Y1 = P0^3;
uint     i,j;
uint     l=305;
void main()
{
    P0 = 0xff;
    TMOD = 0x02;
    TH0 = 256-200;
    TL0 = 256-200;
    IE = 0x82;
    TR0 = 1;
    while(1);
}

void LED_Flash_and_Scroll() interrupt 1
{
      ++j;
   
    switch(i)
    {
         case 0:
        B1=0;
        G1=1;
        R1=1;
        Y1=0;
        break;
        case 1:
        B1=0;
        G1=1;
        R1=1;
        Y1=1;   
        break;
        case 2:        
        B1=1;
        G1=0;
        R1=0;
        Y1=1;
        break;
        case 3:        
        B1=1;
        G1=1;
        R1=0;
        Y1=1;
        break;
    }
            i++;
    if(j==300);
    j = 0;
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:222006 发表于 2020-1-7 21:02 | 只看该作者
i++;一直执行。执行三步就不再执行了,写程序记得变量清零这是一个很重要的东西
回复

使用道具 举报

板凳
ID:222006 发表于 2020-1-7 21:03 | 只看该作者
    if(i<=3)i++;     else i=0;
回复

使用道具 举报

地板
ID:222006 发表于 2020-1-7 21:05 | 只看该作者
还有没明白你j++用起来干啥。
回复

使用道具 举报

5#
ID:235200 发表于 2020-1-7 21:28 | 只看该作者
i的变化是0-65535,而case语句中只列出了i为0 1 2 3  其他情况的i使程序在等待状态
回复

使用道具 举报

6#
ID:398709 发表于 2020-1-7 21:36 | 只看该作者
  1. <div class="blockcode"><blockquote><div>#include <reg52.h></div><div>
  2. </div>#define uchar unsigned char
  3. <div>#define uint unsigned int</div><div>
  4. </div>sbit B1 = P0^0;
  5. sbit G1 = P0^1;
  6. sbit R1 = P0^2;
  7. <div>sbit Y1 = P0^3;</div><div>
  8. </div>uint   i = 0;

  9. void main()
  10. {
  11.     P0 = 0xff;
  12.     TMOD = 0x02;
  13.     TH0 = 256-200;
  14.     TL0 = 256-200;
  15.     IE = 0x82;
  16.     TR0 = 1;
  17.     while(1);
  18. }

  19. void LED_Flash_and_Scroll() interrupt 1
  20. {  
  21.     switch(i)
  22.     {
  23.          case 0:
  24.             B1=0;
  25.             G1=1;
  26.             R1=1;
  27.             Y1=0;
  28.         break;

  29.         case 1:
  30.             B1=0;
  31.             G1=1;
  32.             R1=1;
  33.             Y1=1;   
  34.         break;

  35.         case 2:        
  36.             B1=1;
  37.             G1=0;
  38.             R1=0;
  39.             Y1=1;
  40.         break;

  41.         case 3:        
  42.             B1=1;
  43.             G1=1;
  44.             R1=0;
  45.             Y1=1;
  46.         break;
  47.     }
  48.      i++;
  49.     if(i==4)
  50.     i = 0;
  51. }
复制代码
你试试
回复

使用道具 举报

7#
ID:275826 发表于 2020-1-7 21:45 | 只看该作者
200us一次共4次就结束了,等65536个以后再4次;另外j变量没有用呀
回复

使用道具 举报

8#
ID:97678 发表于 2020-1-8 12:28 | 只看该作者

谢谢。。。。。。
程序是可以运行。
主要是我需要每个段 都要有不同的时间段。
回复

使用道具 举报

9#
ID:97678 发表于 2020-1-8 12:31 | 只看该作者
J变量 是延时用的。
删除了J变量,那么,每个片段时间都一样了。
我需要case 1 是延时十秒钟, CASE 2 延时 一分钟。等等。
怎么增加?
回复

使用道具 举报

10#
ID:130230 发表于 2020-1-8 13:43 | 只看该作者
要么i清掉,要么把default分支加上。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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