找回密码
 立即注册

QQ登录

只需一步,快速开始

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

用按键和定时器中断来控制,单片机程序编译错误,帮我看一看

[复制链接]
跳转到指定楼层
楼主
程序如下:
  1. #include<at89x52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned uint
  4. sbit k1=P3^2;
  5. uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

  6. void delay10ms(uchar a)
  7. {
  8.     uchar b,c;
  9.     for(c=1;c>0;c--)
  10.         for(b=38;b>0;b--)
  11.             for(a=130;a>0;a--);
  12. }

  13. void keyscan()
  14. {
  15. uint flag=0;
  16. if(k2==0X00)
  17. {
  18.   delay10ms(1);
  19.   if(k2==0X00)
  20.    {
  21.      P2=0xFF;
  22.      flag=!flag;
  23.    }
  24. }
  25. }
  26. void main()
  27. {
  28.   TMOD=0x02;
  29.   TH0=0xf6;
  30.   TL0=0xf6;
  31.   ET0=1;EA=1;
  32.   TR0=1;
  33.   while(1);
  34. }
  35. void time() interrupt 1 using 0
  36. {
  37.   uint flag=0;
  38.   uchar temp;
  39.   uchar i;
  40.   if(flag==1)
  41.   {
  42.     temp=0x80;
  43.     for(i=0;i<4;i++)
  44.     {
  45.      P0=tab[i+1];
  46.      P2=~temp;
  47.      temp=temp>>1;
  48.      P2=0xff;
  49.     }
  50.   }

  51. }
复制代码


11111.jpg (80.02 KB, 下载次数: 34)

编译结果

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

使用道具 举报

沙发
ID:412460 发表于 2018-10-19 20:44 | 只看该作者
第十八行中的K2 定义了吗?
回复

使用道具 举报

板凳
ID:303383 发表于 2018-10-19 21:10 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

地板
ID:223880 发表于 2018-10-19 21:16 | 只看该作者
谢谢我大意了,第三行#define uint unsigned int写成#define uint unsiigned uint,还有上面k1写成下面k2了。
回复

使用道具 举报

5#
ID:46065 发表于 2018-10-19 21:16 | 只看该作者
flag 应该定义为全局变量,K2的定义好象也有问题不细看了,
回复

使用道具 举报

6#
ID:412488 发表于 2018-10-19 21:43 | 只看该作者
第三行#define uint  unsigned uint 写错了,这个应该是#define uint  unsigned int
第四行sbit K1=P3^2; 按键函数里面你却用了K2,不出意外你应该是个初学者。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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