找回密码
 立即注册

QQ登录

只需一步,快速开始

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

求助大神,单片机延时语句本身没错但报错,实在是不懂了,求教大神

[复制链接]
跳转到指定楼层
楼主
延时的3句全报错。。无奈。
#include<reg51.h>
sbit P1_0=P1^0;                                     //脉冲输出//
sbit P1_1=P1^1;                                     //计数开关//
sbit P1_2=P1^2;                                     //脉冲开关//
xdata unsigned char w _at_ 0x8002,d _at_ 0x8004;    //位选 段选//
unsigned char j,x0,x1,x2,x3,x4,x5;                  //定义j(定时倍数10) x显示段码//
unsigned long i;                                    //累加i 显示i //
code unsigned char a[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}  //数组显示//
void delay()
{   unsigned char i;
for(i=0;i<250;i++);
}
void play()
{x0=i%10;
x1=i/10%10;
x2=i/100%10;
x3=i/1000%10;
x4=i/10000%10;
x5=i/100000;
w=0x01;d=a[x0]; delay();
w=0x02;d=a[x1]; delay();
w=0x004;d=a[x2];delay();
w=0x08;d=a[x3]; delay();
w=0x10;d=a[x4]; delay();
w=0x20;d=a[x5]; delay();  }
void main()
{EA=1;
ET0=1;
ET1=1;
TMOD=0x15;
TR0=0;
TR1=0;
TH0=0x00;TL1=0x00;
TH1=0x3c;TL1=0xb0;
while(1)
{if(P1_1==0)
{TR0=0;TH0=0x00;TL0=0x00;i=153091;play()}
if(P1_1==1)
{TR0=1;i=TH0<<8|TL0;play();}
if(P1_2==0)
{TR1=0;TH1=0x3c;TL1=0xb0;j=0;P1_0=0}
if(P1_2==1)
{TR1=1;}}}
void int1() interrupt 3
{TH1=0x3c;TL1=0xb0;j++;
if(j==10)
{P1_0=!P1_0;j=0}}

QQ图片20170530150607.png (195.97 KB, 下载次数: 54)

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

使用道具 举报

沙发
ID:18297 发表于 2017-5-30 16:41 | 只看该作者
任何问题都在你的程序中:
1)注意语句结束了需要分号“;”;
2)注意程序书写,不要一行接一行连着写;
code unsigned char a[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}  //数组显示//
这句后面的“;”呢?
回复

使用道具 举报

板凳
ID:70302 发表于 2017-5-30 19:18 | 只看该作者
语句结束了需要分号“;”
语句结束了需要分号“;”
语句结束了需要分号“;”
回复

使用道具 举报

地板
ID:155507 发表于 2017-5-30 22:37 | 只看该作者
  1. #include<reg51.h>

  2. sbit P1_0=P1^0;                                     //脉冲输出//
  3. sbit P1_1=P1^1;                                     //计数开关//
  4. sbit P1_2=P1^2;                                     //脉冲开关//
  5. unsigned char xdata w _at_ 0x8002,d _at_ 0x8004;    //位选 段选//
  6. unsigned char j,x0,x1,x2,x3,x4,x5;                  //定义j(定时倍数10) x显示段码//
  7. unsigned long i;                                    //累加i 显示i //
  8. unsigned char code a[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};  //数组显示//
  9. void delay()
  10. {   unsigned char i;
  11.         for(i=0;i<250;i++);
  12. }
  13. void play()
  14. {
  15.         x0=i%10;
  16.         x1=i/10%10;
  17.         x2=i/100%10;
  18.         x3=i/1000%10;
  19.         x4=i/10000%10;
  20.         x5=i/100000;
  21.         w=0x01;d=a[x0]; delay();
  22.         w=0x02;d=a[x1]; delay();
  23.         w=0x004;d=a[x2];delay();
  24.         w=0x08;d=a[x3]; delay();
  25.         w=0x10;d=a[x4]; delay();
  26.         w=0x20;d=a[x5]; delay();  
  27. }
  28. void main()
  29. {
  30.         EA=1;
  31.         ET0=1;
  32.         ET1=1;
  33.         TMOD=0x15;
  34.         TR0=0;
  35.         TR1=0;
  36.         TH0=0x00; TL1=0x00;
  37.         TH1=0x3c; TL1=0xb0;
  38.         while(1)
  39.         {
  40.                 if(P1_1==0)
  41.                 {
  42.                         TR0=0; TH0=0x00; TL0=0x00; i=153091; play();
  43.                 }
  44.                 if(P1_1==1)
  45.                 {
  46.                         TR0=1; i=TH0<<8|TL0; play();
  47.                 }
  48.                 if(P1_2==0)
  49.                 {
  50.                         TR1=0; TH1=0x3c; TL1=0xb0; j=0; P1_0=0;
  51.                 }
  52.                 if(P1_2==1)
  53.                 {
  54.                         TR1=1;
  55.                 }
  56.         }
  57. }
  58. void int1() interrupt 3
  59. {
  60.         TH1=0x3c; TL1=0xb0;
  61.         j++;
  62.         if(j==10)
  63.         {
  64.                 P1_0=!P1_0; j=0;
  65.         }
  66. }

复制代码
回复

使用道具 举报

5#
ID:206466 发表于 2017-5-31 19:26 | 只看该作者
延时程序没错就不是他的问题,一些看似无关的小错误也会让程序报错
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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