找回密码
 立即注册

QQ登录

只需一步,快速开始

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

求助本单片机程序错误,实在找不到哪里错了

[复制链接]
跳转到指定楼层
楼主
ID:320808 发表于 2018-5-2 21:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

  1. #include <reg52.h>
  2. void delay1ms(int n)         //延时子程序
  3. {
  4. int k,j;  
  5. for(k=0;k<=n;k++)  
  6.    for(j=0;j<=10;j++);
  7. }
  8. void delay1s(int n)   //延时子程序
  9. {
  10. int k,j;   
  11. for(k=0;k<=n;k++)
  12. for(j=0;j<=120;j++);
  13. }  
  14. void SPEAKER(uint n)   //蜂鸣器程序,按周期n发声
  15. {   
  16. for(i=0;i<=200;i++)   
  17. {        
  18. delay(10);  
  19. BEEP=~BEEP;  
  20. }     
  21. BEEP=1; }// ***********************************LCD程序**********
  22. void delay1ms(unsigned int ms)//延时的时间不够精确的
  23. {
  24. uint k,j;  
  25. for(k=0;k<ms;k++)   
  26. for(j=0;j<100;j++);
  27. }
  28. void LCD_w_com(unsigned com)   //写入指令
  29. {  
  30. RW=0;  
  31. RS=0;
  32. E=1;  
  33. P0=com;
  34. delay1ms(40);  
  35. E=0;
  36. RW=1;
  37. }
  38. void LCD_w_dat(uchar dat)   // 写入数据
  39. {

  40. RW=0;
  41. RS=1;  
  42. E=1;
  43. P0=dat;
  44. delay1ms(40);
  45. E=0;  
  46. RW=1;
  47. }  
  48. void gotoxy(unsigned x,unsigned y) // x,y分别代表行列
  49. {  
  50. if(x==1)  
  51. LCD_w_com(0x80+y);
  52. else
  53. LCD_w_com(0xC0+y);
  54. }
  55. void clear_LCD(void)
  56. {
  57. LCD_w_com(0x01);  // 清屏指令  
  58. LCD_w_com(0x02);   //    光标归位 即光标置于左上位置
  59. }
  60. void init_LCD(void)            //   初始化LCD
  61. {  
  62. LCD_w_com(0x38);             //  LCD为两行显示8位数据线有效         
  63. LCD_w_com(0x0c);          // 显示字符  关闭光标
  64. LCD_w_com(0x06);    //  输入方式设置 光标向右移动一位 ac-1
  65. gotoxy(1,0);
  66. for(i=0;i<=5;i++)  
  67. {  
  68. LCD_w_dat(test[i]);
  69. }
  70. }
  71. //*********叫号机 按一次一号键变量+1最大为10*************   
  72. void QueueNumProcess()
  73. {   
  74. rank[Length Flag]=num_count; // num_count为实时取得的号码
  75. Length Flag++;
  76. }
  77. if(Length Flag>10) (void)   
  78. {      
  79. EA=1;  
  80. EX0=1;
  81. EX1=1;  
  82. IT0=1;  
  83. IT1=1;
  84.     clear_LCD();   
  85. init_LCD();
  86. while(1)  
  87. {
  88. delay1s(10000);  
  89. clear_LCD();  
  90. gotoxy(1,0);  
  91.      for(i=0;i<=5;i++)  
  92. {   
  93.   LCD_w_dat(test[i]);  
  94. }   
  95. delay1s(10000);  
  96. clear_LCD();  
  97. prompt8[0]=Length Flag10+'0';
  98. prompt8[1]=Length Flag%10+'0';
  99. gotoxy(1,0);  
  100. for(m=0;m<=9;m++)
  101. {
  102. LCD_w_dat(prompt8[m]);
  103.   }  
  104. delay1s(10000);  
  105. clear_LCD();   
  106. ClearNumProcess();   
  107. prompt2[3]=(num)10+'0';
  108. prompt2[4]=(num)%10+'0';  
  109. prompt3[1]=jz+'0';   
  110. gotoxy(1,0);
  111. for(m=0;m<=15;m++)   
  112. {  
  113. LCD_w_dat(prompt2[m]);
  114.   }   
  115. gotoxy(2,0);   
  116. for(m=0;m<=15;m++)  
  117. {  
  118. LCD_w_dat(prompt3[m]);
  119.   }  
  120. }   
  121. } //**************按键中断方式**********************  
  122. void int_x0() interrupt 0
  123. {     
  124. if(!key1) {jz=1;sev1++;}
  125. if(!key2) {jz=2;sev2++;}   
  126. if(!key3) {jz=3;sev3++;}   
  127. if(!key4) {jz=4;sev4++;}               
  128. if(!key0) /// ******叫号机程序*******      
  129. {            
  130. while(!key0);      
  131. if(Length Flag<=10)        
  132. {      
  133. clear_LCD();        
  134. QueueNumProcess();        
  135. prompt1[11]=(num_count)10+'0';            prompt1[12]=(num_count)%10+'0';     
  136. num_count++;  
  137. }   
  138. else   
  139. {      
  140. clear_LCD();
  141. gotoxy(1,2);   
  142. for(m=0;m<=10;m++)   
  143. {   
  144. LCD_w_dat(prompt4[m]);   
  145. }            
  146. gotoxy(2,0);   
  147. for(m=0;m<=15;m++)   
  148. {
  149. LCD_w_dat(prompt5[m]); // 提示队列已满         
  150. }            
  151. }   
  152. key5=0;               
  153. }        
  154. if((!key1||!key2||!key3||!key4)&&key0) // *******消号处理******
  155. {
  156.   while((!key1||!key2||!key3||!key4)&&key0);
  157.      {      
  158. SPEAKER(11);   
  159. delay(200);   
  160. SPEAKER(15);      
  161. if(Length Flag<1)   
  162.       {  
  163. clear_LCD();         
  164. gotoxy(1,0);      
  165. for(m=0;m<=15;m++)      
  166. {      
  167. LCD_w_dat(prompt6[m]);      
  168. }           
  169. gotoxy(2,0);      
  170. for(m=0;m<=8;m++)      
  171. {      
  172. LCD_w_dat(prompt7[m]);      
  173. }// 显示队列为空     
  174. }      
  175. else      
  176. {      
  177. clear_LCD();      
  178. ClearNumProcess();      
  179. prompt2[3]=(num)10+'0';               
  180. prompt2[4]=(num)%10+'0';      
  181. prompt3[1]=jz+'0';               
  182. gotoxy(1,0);      
  183. for(m=0;m<=15;m++)      
  184. {      
  185. LCD_w_dat(prompt2[m]);      
  186. }      
  187. gotoxy(2,0);      
  188. for(m=0;m<=15;m++)      
  189. {
  190. LCD_w_dat(prompt3[m]);     
  191. }         
  192. }     
  193. }
  194. }  
  195. }  
  196. void int_x1() interrupt 2
  197. {  
  198. if(!key5)      //  统计等待人数   
  199. {
  200. key5=1;     
  201. clear_LCD();  
  202. prompt8[0]=Length Flag10+'0';  
  203. prompt8[1]=Length Flag%10+'0';  
  204. gotoxy(1,0);  
  205. for(m=0;m<=9;m++)  
  206. {  
  207. LCD_w_dat(prompt8[m]);     
  208. }   
  209. }   
  210. if(!key6)     // 统计客流量   
  211. {      
  212. clear_LCD();   
  213. prompt9[7]=(sev)10+'0';   
  214. prompt9[8]=(sev)%10+'0';   
  215. gotoxy(1,0);   
  216. for(m=0;m<=9;m++)   
  217. {   
  218. LCD_w_dat(prompt9[m]);
  219. }  
  220. }   
  221. if(!key7)      // 统计各窗口客流量   
  222. {   
  223. clear_LCD();   
  224. prompt10[5]=sev110+'0';   
  225. prompt10[6]=sev1%10+'0';   
  226. prompt11[5]=sev210+'0';   
  227. prompt11[6]=sev2%10+'0';   
  228. prompt12[5]=sev310+'0';   
  229. prompt12[6]=sev3%10+'0';   
  230. prompt13[5]=sev410+'0';   
  231. prompt13[6]=sev4%10+'0';     
  232. gotoxy(1,0);   
  233. for(m=0;m<=7;m++)   
  234. {   
  235. LCD_w_dat(prompt10[m]);   
  236. }        
  237. gotoxy(1,8);   
  238. for(m=0;m<=7;m++)   
  239. {   
  240. LCD_w_dat(prompt11[m]);   
  241. }   
  242. gotoxy(2,0);   
  243. for(m=0;m<=7;m++)   
  244. {   
  245. LCD_w_dat(prompt12[m]);   
  246. }
  247. gotoxy(2,8);   
  248. for(m=0;m<=7;m++)   
  249. {   
  250. LCD_w_dat(prompt13[m]);   
  251. }   
  252. }   
  253. if(!cd)       // 插队处理     
  254. {     
  255. clear_LCD();     
  256. gotoxy(1,0);     
  257. for(m=0;m<=6;m++)     
  258. {     
  259. LCD_w_dat(prompt14[m]);     
  260. }     
  261. Length Flag++;     
  262. for(i=1;i<Length Flag;i++)      
  263. rank[Length Flag-i]=rank[Length Flag-i-1];      
  264. rank[0]=10;   
  265. }     
  266. IT1=0;
  267. }
复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

来自 2#
ID:139455 发表于 2018-5-3 02:04 | 只看该作者
第一行,授权错误,如果你用keil 则需要在网上下载keil的注册机,注册后在编译即可去掉警告,百度一下,会有很多。
第14行,语法错误,uint没有定义,改成unsigned int 即可,或在#include <reg52.h> 下一行加上一句 #define uint unsigned int 定义也行。
第16行,i没有定义,在本函数里加 unsigned char i; 定义。
看了你的程序,可能还有错误,多半是用到的变量没定义。

评分

参与人数 1黑币 +90 收起 理由
admin + 90 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:320808 发表于 2018-5-2 21:35 | 只看该作者
哭晕在厕所啦
回复

使用道具 举报

地板
ID:320890 发表于 2018-5-2 23:37 | 只看该作者
02.void delay1ms(int n) void delay1ms(unsigned int ms)貌似重名

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

5#
ID:320808 发表于 2018-5-3 00:43 | 只看该作者
1.C(1): warning C500: LICENSE ERROR (R208: RENEW LICENSE ID CODE (LIC))
1.C(14): error C141: syntax error near 'n', expected ')'
1.C(16): error C202: 'i': undefined identifier
这是报错,不知道怎么改了,有没有大神了该啊
回复

使用道具 举报

6#
ID:320808 发表于 2018-5-3 00:43 | 只看该作者
陈林19861106 发表于 2018-5-2 23:37
02.void delay1ms(int n) void delay1ms(unsigned int ms)貌似重名

1,14,16行报错,也不知道到底哪里错了,哎
回复

使用道具 举报

7#
ID:285194 发表于 2018-5-3 08:11 | 只看该作者
在14行那个函数定义一个 int i;
回复

使用道具 举报

8#
ID:318768 发表于 2018-5-4 21:35 | 只看该作者
报错不都说了,
LICENSE ERROR 许可证错误
syntax error near 'n', expected ')' 语法错误,在n和)附近
undefined identifier 未定义标识符

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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