通义千问·给出的按键检测程序也有错
按键是接stc89c52的P3.4和P3.5.
下面这个问题是通义千问·给的错误代码,而且告知错误后,还是没解决。自己尝试解决出来的(已解决)。
#include <reg52.h>
#define LED P0
sbit KEY1 = P3^4;
sbit KEY2 = P3^5;
typedef unsigned char uchar;
typedef unsigned int uint;
uint cnt;
bit showModeFlag = 0;
uchar table1 = {0x5F, 0xED, 0xDB, 0xE7, 0x00, 0xFF, 0x00, 0xFF, 0xED, 0xDB, 0xE7, 0x00, 0xFF, 0x00, 0xFF};
uchar table2 = {0xFE, 0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xBF, 0x7F, 0xFF, 0x00, 0xFF, 0x7F, 0xBF, 0xDF, 0xEF, 0xF7, 0xFB, 0xFD, 0xFE, 0x01};
void delay(uint cnt) {
while(cnt--);
}
void Led_Show1() {
uint i;
for (i = 0; i < 15; i++) {
LED = table1;
delay(8000); // 增加延时时间
if (showModeFlag != 1) {
break;
}
}
}
void Led_Show2() {
uint i;
for (i = 0; table2 != 0x01; i++) {
LED = table2;
delay(8000); // 增加延时时间
if (showModeFlag != 2) {
break;
}
}
}
// 定义 debounce 函数,参数类型为 sbit
bit debounce(sbit key) {
static bit lastState = 1; // 静态变量,保存上一次按键状态,默认为未按下(高电平)
bit currentState = key; // 获取当前按键状态
// 检查当前按键是否按下且上次按键状态为未按下
if (currentState == 0 && lastState == 1) {
delay(5); // 短暂延时去抖动
// 再次检查按键状态以确认按键确实按下
if (key == 0) {
lastState = 0; // 更新按键状态为已按下
return 1; // 返回1表示按键有效按下
}
}
// 如果当前按键状态为释放,则更新lastState为1
else if (currentState == 1) {
lastState = 1;
}
// 默认情况下返回0,表示按键未有效按下
return 0;
}
void main() {
while (1) {
if (debounce(KEY1)) {
showModeFlag = 1;
Led_Show1();
showModeFlag = 0; // 重置标志位
}
if (debounce(KEY2)) {
showModeFlag = 2;
Led_Show2();
showModeFlag = 0; // 重置标志位
}
}
}
报错是
Rebuild started: Project: hc_51_key2_led_show
Rebuild target 'Target 1'
compiling main.c...
main.c(42): error C141: syntax error near 'sbit', expected 'bit'
main.c(44): error C202: 'key': undefined identifier
main.c(50): error C202: 'key': undefined identifier
Target not created.
Build Time Elapsed:00:00:00
怎么也不知道错哪里了。
突然貌似看明白了。
把42行参数定义的sbit key改成bit key。即可。
自动生成的代码还需要手动检测。。 智障AI了解一下 dongge 发表于 2025-1-2 22:27
好像是阿里的ai吧?
对头。阿里的通义千问,百度的文心一言。李彦宏这个我还没用过 dongge 发表于 2025-1-3 12:33
头一次见ai写代码
老哥,多接触下吧。这个挺管用的。创作还有点差距。但是搞51这些有点年头的传统技术,还是基本没问题。
到了8h,51u这样的就有点不给力了。
<p>让他生成一些固定的算法类的东西还可以,,涉及一些业务代码就差点儿意思了。。</p>
<p>不过一些类似的但又没法抽象出来的代码,照葫芦画瓢的功能用的还是比较顺心。。</p>
_奶咖君_ 发表于 2025-1-3 14:02
让他生成一些固定的算法类的东西还可以,,涉及一些业务代码就差点儿意思了。。
不过一些类似的但又没法抽 ...
直接出一整套代码貌似做不到,但是可以引导他加以修改 yzhkpli 发表于 2025-1-3 14:25
直接出一整套代码貌似做不到,但是可以引导他加以修改
是的,,不过他们的代码还是偏向纯软件开发的,,,,沾点儿底层的东西就开始瞎写了,,给他说了不能用指针访问寄存器,就非得用,,气笑了,后来就放过它,让它写点儿别的了 _奶咖君_ 发表于 2025-1-3 15:06
是的,,不过他们的代码还是偏向纯软件开发的,,,,沾点儿底层的东西就开始瞎写了,,给他说了不能用指 ...
用的deepv3试试
页:
[1]