找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机数码管程序问题 困扰我很长时间了

[复制链接]
跳转到指定楼层
楼主
还是昨天的问题,这两个程序分别如下:

这两个程序唯一的差别在于程序一循环有两个,程序二循环是一个。
但是运行的结果是程序一单片机并不变化,程序二单片机可以正常变化数字
而且通过电压表可以看出,虽然程序赋值相同,这两个单片机空闲接口电压根本不一样
这个问题困扰我很长时间了,谁能解答一下?不胜感激!

程序一:
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. xdata uchar num[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  4. void delay(uchar i)
  5. {
  6. uchar t;
  7. while(i--)
  8. {
  9.   for(t=0;t<120;t++);
  10. }
  11. }
  12. void main()
  13. {
  14.   uchar i;
  15.   while(1)
  16.   {
  17.    for(i=0;i<10;i=i+2)
  18.    {
  19.     P2=num[i];
  20.     delay(500);
  21.    }
  22.    for(i=0;i<10;i++)
  23.    {
  24.     P2=num[i];
  25.     delay(500);
  26.    }
  27.   }
  28. }
  29. 程序二:
  30. #include<reg51.h>
  31. #define uchar unsigned char
  32. uchar code num[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  33. void delay(uchar i)
  34. {
  35. uchar t;
  36. while(i--)
  37. {
  38.   for(t=0;t<120;t++);
  39. }
  40. }
  41. void main()
  42. {
  43. uchar i;
  44. while(1)
  45. {
  46.   for(i=0;i<10;i++)
  47.   {
  48.     P2=num[i];
  49.     delay(500);
  50.   }
  51. }
  52. }
复制代码

3F`EEF74E7N1SQY75UAY(%R.png (127.6 KB, 下载次数: 54)

3F`EEF74E7N1SQY75UAY(%R.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:301728 发表于 2018-4-5 09:12 | 只看该作者
我参考了一下昨天的回答,发现只要吧Xdata改成data,程序一单片机就正常了,这是怎么回事?
回复

使用道具 举报

板凳
ID:261288 发表于 2018-4-5 11:24 | 只看该作者
xdata存储类型是片外RAM,此电路中无片外RAM,CPU找不到数据。
回复

使用道具 举报

地板
ID:301728 发表于 2018-4-5 14:34 来自触屏版 | 只看该作者
冰纯 发表于 2018-4-5 11:24
xdata存储类型是片外RAM,此电路中无片外RAM,CPU找不到数据。

我明白了,谢谢!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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