先用C写完,然后点kel模拟调试,就会自动生成汇编,复制过来忽悠一下就行了 |
风抓不住过往 发表于 2025-3-19 16:48 中转 先跳到中间 再跳转目标 |
hi等你 发表于 2023-5-26 10:58 想问问你们碰到error A51: TARGET OUT OF RANGE这种错误的时候都怎么解决啊 |
1588848 发表于 2021-8-24 23:22 ![]() 我这个也是多级菜单吧,上下四个选项,也是汇编,也不难写啊,用个寄存器写入对应的数据而已 |
用汇编实现多级菜单是痛苦的选择![]() |
////////////菜单切换及选择/////////////////////////////////////////////////////////////////////////////////////////////////////////////// while(1){ button(); //按键扫描 if(n1==0){ // 返回/上 n4=n4-1; if(n4<0) { n4=11; } if(n4<=3) { LcmClearTXT(); LcmClearBMP(); for(i=0;i < 4;i++){ LCD_ShowString(i,0,menu[i]); } } //菜单选择 if(n4>3 & n4<=7) { LcmClearTXT(); LcmClearBMP(); for(i=0;i < 4;i++){ LCD_ShowString(i,0,menu1[i]); } } if(n4>7) { LcmClearTXT(); LcmClearBMP(); for(i=0;i < 4;i++){ LCD_ShowString(i,0,menu2[i]); } } // if(n4<=3) { LcmClearTXT(); highlight(0,liney,8,0); for(i=0;i < 4;i++){ LCD_ShowString(i,0,menu[i]); } } // if(n4>3 & n4<=7) { LcmClearTXT(); highlight(0,liney,8,0); for(i=0;i < 4;i++){ LCD_ShowString(i,0,menu1[i]); } } // if(n4>7) { LcmClearTXT(); highlight(0,liney,8,0); for(i=0;i < 4;i++){ LCD_ShowString(i,0,menu2[i]); } } if(n4==0 | n4==4 | n4==8 ){ liney=0; } //光标位置 if(n4==1 | n4==5 | n4==9 ){ liney=1; } if(n4==2 | n4==6 | n4==10 ){ liney=2; } if(n4==3 | n4==7 | n4==11 ){ liney=3; } highlight(0,liney,8,255); //放置光标 } if(n2==0){ // 下 n4=n4+1; if(n4>11) { n4=0; } if(n4<=3) { LcmClearTXT(); LcmClearBMP(); for(i=0;i < 4;i++){ LCD_ShowString(i,0,menu[i]); } } if(n4>3 & n4<=7) { LcmClearTXT(); LcmClearBMP(); for(i=0;i < 4;i++){ LCD_ShowString(i,0,menu1[i]); } } if(n4>7) { LcmClearTXT(); LcmClearBMP(); for(i=0;i < 4;i++){ LCD_ShowString(i,0,menu2[i]); } } if(n4==0 | n4==4 | n4==8 ){ liney=0; } if(n4==1 | n4==5 | n4==9 ){ liney=1; } if(n4==2 | n4==6 | n4==10 ){ liney=2; } if(n4==3 | n4==7 | n4==11 ){ liney=3; } highlight(0,liney,8,255); //放置光标 } if(n3==0){ // 确认 if(n4==0) { LcmClearBMP(); LcmClearTXT(); goto HB;} if(n4==1) { LcmClearBMP(); LcmClearTXT(); goto HC;} if(n4==2) { LcmClearBMP(); LcmClearTXT(); goto HD;} if(n4==3) { LcmClearBMP(); LcmClearTXT(); goto HE;} if(n4==4) { LcmClearBMP(); LcmClearTXT(); goto HF;} if(n4==5) { LcmClearBMP(); LcmClearTXT(); goto HG;} if(n4==6) { LcmClearBMP(); LcmClearTXT(); goto HH;} if(n4==7) { LcmClearBMP(); LcmClearTXT(); goto HI;} if(n4==8) { LcmClearBMP(); LcmClearTXT(); goto HJ;} if(n4==9) { LcmClearBMP(); LcmClearTXT(); goto HK;} if(n4==10){ LcmClearBMP(); LcmClearTXT(); goto HL;} if(n4==11){ LcmClearBMP(); LcmClearTXT(); goto HM;} } |
弄两个菜单函数,使用楼上说的按上下键,搞个变量累加,根据变量值来选择显示菜单页面的光标 |
这个问题我已经解决,用LCD1602显示,然后找一个标志地址,当按上下键的时候,标志地址里的标志位加一或减一,通过改变标志位来改变LCD显示的TAB,然后再输出就可以了 |