|
|
1
1
对于任何落后的人来说,问题1中的代码实际上是有效的代码。我的错误是不小心将TRISC初始化为1而不是0xff;这意味着我试图关闭一个输出按钮。我应该比那更清楚。 然而,在其他场合,我通过在main()中声明变量而遇到了这个问题;而不是在功能之外。这意味着我试图修改一个没有声明它的函数内部的局部变量——这给了我空值和垃圾。Pedwards正确地识别出我在处理全局变量和局部变量时遇到了问题;“范围”是一个非常有用的关键词。 ISR修改变量时,必须将变量声明为volatile。在Oled发表评论后,我在XC8编译器手册第169页上找到了这些信息。 |
|
|
2
0
你缺少的是所谓的“范围”。这并不是XC8特有的,任何C书都会帮助您。 PIC中断不会因某种原因获取/返回任何内容。在定义ISR的同一文件中定义一个全局,并读取/更改该全局。如果要从ISR写入,请将其声明为“volatile”:
如果您需要从另一个文件访问它(初学者应避免这样做),请在此文件中声明它为“extern”(或include):
|