找回密码
 立即注册

QQ登录

只需一步,快速开始

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

error C142: 'SFR': invalid base address keil编译错误问题(独立按键和外部中断)

[复制链接]
跳转到指定楼层
楼主
ID:428588 发表于 2018-11-18 11:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
新手学习中报错后找不到哪里错了大神帮忙看一下,想做一个简单的独立按键和外部中断

错误点:main.c(5): error C142: 'SFR': invalid base address
main.c(60): error C202: 'y': undefined identifier
main.c(61): error C202: 'y': undefined identifier
main.c(111): error C141: syntax error near 'void'

单片机源码:
  1. #include <stc15f2k60s2.h>

  2. #include <intrins.h>
  3. #define GPIO_LED P2
  4. sbit k1=P5^5;   
  5. sbit y=3^2;       //这里不明白是哪里错了 ,和高低位有关系吗???
  6. void  keypros();
  7. void Delay1ms() ;
  8. void Delay500ms();
  9. void Delay1000ms() ;



  10. void Int1Init()
  11. {
  12. IT0=1;
  13. EX0=1;
  14. EA=1;
  15. }
  16. void Delay1ms()  //@11.0592MHz
  17. {
  18. unsigned char i, j;
  19. _nop_();
  20. _nop_();
  21. _nop_();
  22. i = 11;
  23. j = 190;
  24. do
  25. {
  26.   while (--j);
  27. } while (--i);
  28. }




  29. void main()
  30. {
  31.   GPIO_LED=1;
  32.   keypros();
  33.   Int1Init();
  34. while(1)
  35. {
  36.    
  37.    if(k1==0)
  38. {Delay1ms() ;
  39.   if(k1==0)
  40.   {
  41.   y=1;
  42.    y=0;
  43. }
  44.   while(!k1);
  45. }
  46.   
  47.   
  48.   
  49. }
  50. }









  51. void keypros()//
  52. {
  53.   if(k1==0)
  54. {
  55. Delay1ms();
  56. if(k1==0)
  57. {
  58. unsigned char n;
  59. GPIO_LED=0xfe;
  60. while(1){
  61. for(n=0;n<7;n++)
  62. {
  63. GPIO_LED=_crol_(GPIO_LED,1);
  64. Delay500ms();
  65. }
  66. for(n=0;n<7;n=n++)
  67. {
  68. GPIO_LED=_cror_(GPIO_LED,1);
  69. Delay500ms();}
  70. }
  71. }
  72. while(!k1);
  73. }  
  74.   
  75.   


  76. void Int1() interrupt 0
  77. {
  78.    
  79. while(1){
  80.    unsigned char n;
  81. GPIO_LED=0xfe;
  82.   for(n=0;n<7;n++)
  83. {GPIO_LED=_crol_(GPIO_LED,1);
  84.   Delay1000ms();}

  85. for(n=0;n<7;n=n++)
  86. {GPIO_LED=_cror_(GPIO_LED,1);
  87. Delay1000ms();
  88. }
  89. }
  90. }
  91. void Delay1000ms()  //@11.0592MHz
  92. {
  93. unsigned char i, j, k;
  94. _nop_();
  95. _nop_();
  96. i = 43;
  97. j = 6;
  98. k = 203;
  99. do
  100. {
  101.   do
  102.   {
  103.    while (--k);
  104.   } while (--j);
  105. } while (--i);
  106. }

  107. void Delay500ms()  //@11.0592MHz
  108. {
  109. unsigned char i, j, k;
  110. _nop_();
  111. _nop_();
  112. i = 22;
  113. j = 3;
  114. k = 227;
  115. do
  116. {
  117.   do
  118.   {
  119.    while (--k);
  120.   } while (--j);
  121. } while (--i);
  122. }
复制代码




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

使用道具 举报

沙发
ID:303383 发表于 2018-11-18 14:44 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

板凳
ID:428712 发表于 2018-11-18 15:27 | 只看该作者
sbit k1=P5^5;   
sbit y=3^2;       //这里不明白是哪里错了 ,和高低位有关系吗???


这两行代码,为什么不在函数中呢,还有,K1与y是常量吗,常量直接定义成宏就可以了啊
回复

使用道具 举报

地板
ID:428730 发表于 2018-11-18 16:05 | 只看该作者
首先你定义引脚的时候少了P,然后你的60行出现的y变量没有定义,最后是语法错误,再那行仔细检查下。祝你好运!
回复

使用道具 举报

5#
ID:164602 发表于 2018-11-19 08:35 | 只看该作者
我还发现一个错误:你的编译报错最后一项,是因为111行的上一行,缺少一个大括号}的原因。
回复

使用道具 举报

6#
ID:88606 发表于 2020-4-7 14:31 | 只看该作者
sbit y=3^2;       改为sbit y=P3^2;      
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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