找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2252|回复: 3
收起左侧

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

[复制链接]
ID:301728 发表于 2018-4-5 09:04 | 显示全部楼层 |阅读模式
还是昨天的问题,这两个程序分别如下:

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

程序一:
  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
回复

使用道具 举报

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 单片机教程网

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