单片机语法问题 详见scan函数

[复制链接]
1595|8
 楼主| damoyeren 发表于 2014-11-4 21:01 | 显示全部楼层 |阅读模式
  1. //目的:显示一个固定的数字
  2. //有几个问题没搞明白,详见scan程序注释
  3. # include <reg52.h>

  4. typedef unsigned char uchar;
  5. typedef unsigned int uint;
  6. sbit addr0 = P1^0;
  7. sbit addr1 = P1^1;
  8. sbit addr2 = P1^2;
  9. sbit addr3 = P1^3;
  10. sbit enled = P1^4;
  11. uchar a, b, c = 0;
  12. uchar number[16] = { 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
  13. 0x80,0x90,0x88,0x83,0xa7,0xa1,0x86,0x8e
  14. };


  15. void scan (void);

  16. void main (void)
  17. {

  18. addr3 = 1;
  19. while (1)
  20. {
  21. scan();
  22. }
  23. }


  24. void scan (void)
  25. {
  26. //uchar a,b,c; 为什么不能定义为局部变量
  27. uchar i = 158;//要显示的数字
  28. enled = 1;// 这句和上边那句(uchar i = 158)位置为什么不能调啊
  29. a = i/100;
  30. addr0 = 1;
  31. addr1 = 0;
  32. addr2 = 1;
  33. P0 = number[a]; //显示第一位
  34. enled = 0;

  35. enled = 1;
  36. b = i%100/10;
  37. addr0 = 0;
  38. addr1 = 0;
  39. addr2 = 1;
  40. P0 = number[b]; //显示第二位
  41. enled = 0;

  42. enled = 1;
  43. c = i%100%10;
  44. addr0 = 1;
  45. addr1 = 1;
  46. addr2 = 0;
  47. P0 = number[c]; //显示第三位
  48. enled = 0;
  49. }

samglz 发表于 2014-11-10 17:32 | 显示全部楼层
c函数只允许在开始之处申明变量
airwill 发表于 2014-11-11 22:05 | 显示全部楼层
1. C51 (Keil) 是可以定义局部变量的. 而且我推荐定义局部变量, 因为编译器可以通过内存覆盖分析, 可能节省内存的消耗.

2. 位置为什么不能调, 就如楼上所说, C 函数只允许在开始之处申明局部变量

 楼主| damoyeren 发表于 2014-11-17 12:45 | 显示全部楼层
samglz 发表于 2014-11-10 17:32
c函数只允许在开始之处申明变量

uchar i = 158;//要显示的数字
enled = 1;// 这句和上边那句(uchar i = 158)位置为什么不能调啊
wangch_sh 发表于 2014-11-17 14:14 | 显示全部楼层
变量定义语句不能在赋值语句之后。
lanmp 发表于 2014-11-17 15:41 | 显示全部楼层
改用C99
 楼主| damoyeren 发表于 2014-11-17 17:00 | 显示全部楼层
airwill 发表于 2014-11-11 22:05
1. C51 (Keil) 是可以定义局部变量的. 而且我推荐定义局部变量, 因为编译器可以通过内存覆盖分析, 可能节省 ...

我导向定义局部变量的,但是不能定义啊,如果定义为局部变量,编译报错!
airwill 发表于 2014-11-17 18:14 | 显示全部楼层
damoyeren 发表于 2014-11-17 17:00
我导向定义局部变量的,但是不能定义啊,如果定义为局部变量,编译报错! ...

如果定义为局部变量,编译报错!
为什么不把错误代码和信息贴上来呢?
qqljhang 发表于 2014-11-18 22:09 | 显示全部楼层
全局查找一下a,b,c是不是在别的地方也用到了,所以不能定义为局部变量?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

126

主题

393

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部