状态寄存器错误
Bad status register?
正在处理一个项目。教授给了我们一个包含一些测试的.zip文件,因此我们可以查看我们的项目是否正常工作。我们正在用 c++ 构建一个小内核。
无论如何,有一个线程等待键盘中断(event9.wait()),之后它应该将字符放入缓冲区或结束程序(如果您按"esc")。
while (!theEnd) {
event9.wait();
status = inportb(0x64); // reading status reg. from 64h
while (status & 0x01){ //while status indicates that keys are pressed
....
我检查了一下,我确信它会定期等待中断。出现此问题的原因是状态 &0x01 为 0。
然后我得到了从0x60中获取字符的代码部分,它工作得很好。
测试文件的代码有问题吗?如果是,怎么办?如果代码正确,什么可能导致问题?
我可以更改测试文件,但我需要一个很好的理由来这样做。到目前为止,我唯一的原因是它不起作用。
*注意:评论是从塞尔维亚语翻译而来的,但我几乎可以肯定它们翻译正确。
我认为status & 0x01
完全没问题。但是,您需要在读取端口 0x60 后再次读取端口 - 很可能稍后在代码中执行此操作,但我个人只会将代码重写为:
while ((status = inportb(0x64)) & 0x01){ //while status indicates that keys are pressed
....
请注意,在这种情况下,您不应在循环中再次读取端口 0x64。
相关文章:
- 本质:使用__128寄存器
- 将寄存器设计成可由C和C++访问的外设的最佳实践
- 在模拟器中使用并集来模拟CPU寄存器有多合适
- 使用英特尔 PIN 修改寄存器
- AVX 指令中寄存器和指针之间的客观差异
- 如何确定我的处理器有多少个 AVX 寄存器?
- 除非使用某些寄存器,否则函数挂钩会崩溃
- 寄存器上的管道计算
- 其中关于内存和寄存器的左值和右值
- 有没有办法强制C++编译器将变量存储在寄存器中?
- "变量":函数中函数作用域不允许初始化的自动或寄存器变量'naked'
- Atmel Studio:返回一个包含数组的寄存器
- 使用 googletest 测试嵌入式C++代码时处理外设寄存器的重复符号
- 移位寄存器74HC595输出电流
- 超过255的Modbus寄存器无法访问SimpleModbus
- 如何在程序集函数中将元素数组作为参数传递时转发 ARM 寄存器的地址指针
- 无法在类 'POINTER_REGS' 中找到溢出的寄存器(可能是编译器错误)
- 寄存器c++14和gcc的编译错误
- 状态寄存器错误
- 嵌入式应用程序写寄存器时出现分段错误