找回密码
 立即注册

QQ登录

只需一步,快速开始

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

注释详细的单片机检漏仪源代码 在LCD1602显示 含原理图

[复制链接]
跳转到指定楼层
楼主


  1. /*****************************************************
  2. 函数功能:延时1ms
  3. (3j+2)*i=(3×33+2)×10=1010(微秒),可以认为是1毫秒
  4. ***************************************************/
  5. void delay1ms()
  6. {
  7.    unsigned char i,j;
  8.   for(i=0;i<10;i++)
  9.    for(j=0;j<33;j++)
  10.     ;   
  11. }
  12. /*****************************************************
  13. 函数功能:延时若干毫秒
  14. 入口参数:n
  15. ***************************************************/
  16. void delaynms(unsigned char n)
  17. {
  18.    unsigned char i;
  19. for(i=0;i<n;i++)
  20.     delay1ms();
  21. }
  22. /*****************************************************
  23. 函数功能:判断液晶模块的忙碌状态
  24. 返回值:result。result=1,忙碌;result=0,不忙
  25. ***************************************************/
  26. bit BusyTest(void)
  27.   {
  28.     bit result;
  29. RS=0;       //根据规定,RS为低电平,RW为高电平时,可以读状态
  30.     RW=1;
  31.     E=1;        //E=1,才允许读写
  32.     _nop_();   //空操作
  33.     _nop_();
  34.     _nop_();
  35.     _nop_();   //空操作四个机器周期,给硬件反应时间
  36.     result=BF;  //将忙碌标志电平赋给result
  37.    E=0;         //将E恢复低电平
  38.    return result;
  39.   }
  40. /*****************************************************
  41. 函数功能:将模式设置指令或显示地址写入液晶模块
  42. 入口参数:dictate
  43. ***************************************************/
  44. void WriteInstruction (unsigned char dictate)
  45. {   
  46.     while(BusyTest()==1);   //如果忙就等待
  47.   RS=0;                  //根据规定,RS和R/W同时为低电平时,可以写入指令
  48.   RW=0;   
  49.   E=0;                   //E置低电平(根据表8-6,写指令时,E为高脉冲,
  50.                            // 就是让E从0到1发生正跳变,所以应先置"0"
  51.   _nop_();
  52.   _nop_();               //空操作两个机器周期,给硬件反应时间
  53.   P0=dictate;            //将数据送入P0口,即写入指令或地址
  54.   _nop_();
  55.   _nop_();
  56.   _nop_();
  57.   _nop_();               //空操作四个机器周期,给硬件反应时间
  58.   E=1;                   //E置高电平
  59.   _nop_();
  60.   _nop_();
  61.   _nop_();
  62.   _nop_();               //空操作四个机器周期,给硬件反应时间
  63.    E=0;                  //当E由高电平跳变成低电平时,液晶模块开始执行命令
  64. }
  65. /*****************************************************
  66. 函数功能:指定字符显示的实际地址
  67. 入口参数:x
  68. ***************************************************/
  69. void WriteAddress(unsigned char x)
  70. {
  71.      WriteInstruction(x|0x80); //显示位置的确定方法规定为"80H+地址码x"
  72. }
  73. /*****************************************************
  74. 函数功能:将数据(字符的标准ASCII码)写入液晶模块
  75. 入口参数:y(为字符常量)
  76. ***************************************************/
  77. void WriteData(unsigned char y)
  78. {
  79.     while(BusyTest()==1);  
  80.    RS=1;           //RS为高电平,RW为低电平时,可以写入数据
  81.    RW=0;
  82.    E=0;            //E置低电平(根据表8-6,写指令时,E为高脉冲,
  83.                      // 就是让E从0到1发生正跳变,所以应先置"0"
  84.    P0=y;           //将数据送入P0口,即将数据写入液晶模块
  85.    _nop_();
  86.    _nop_();
  87.     _nop_();
  88.      _nop_();       //空操作四个机器周期,给硬件反应时间
  89.    E=1;           //E置高电平
  90.    _nop_();
  91.    _nop_();
  92.    _nop_();
  93.   _nop_();        //空操作四个机器周期,给硬件反应时间
  94.   E=0;            //当E由高电平跳变成低电平时,液晶模块开始执行命令
  95. }
  96. /*****************************************************
  97. 函数功能:对LCD的显示模式进行初始化设置
  98. ***************************************************/
  99. void LcdInitiate(void)
  100. {
  101. delaynms(15);               //延时15ms,首次写指令时应给LCD一段较长的反应时间
  102. WriteInstruction(0x38);     //显示模式设置:16×2显示,5×7点阵,8位数据接口
  103. delaynms(5);                //延时5ms ,给硬件一点反应时间
  104. WriteInstruction(0x38);
  105. delaynms(5);               //延时5ms ,给硬件一点反应时间
  106. WriteInstruction(0x38);     //连续三次,确保初始化成功
  107. delaynms(5);               //延时5ms ,给硬件一点反应时间
  108. WriteInstruction(0x0c);     //显示模式设置:显示开,无光标,光标不闪烁
  109. delaynms(5);               //延时5ms ,给硬件一点反应时间
  110. WriteInstruction(0x06);     //显示模式设置:光标右移,字符不移
  111. delaynms(5);                //延时5ms ,给硬件一点反应时间
  112. WriteInstruction(0x01);     //清屏幕指令,将以前的显示内容清除
  113. delaynms(5);             //延时5ms ,给硬件一点反应时间
  114. }

  115. /*****************************************************
  116. 函数功能:显示电压符号
  117. ***************************************************/   
  118. void display_volt(void)
  119. {
  120.     unsigned char i;
  121.   WriteAddress(0x00);    //写显示地址,将在第2行第1列开始显示
  122.   i = 0;                //从第一个字符开始显示
  123.   while(Str[i] != '\0')  //只要没有写到结束标志,就继续写
  124.    {      
  125.    WriteData(Str[i]);   //将字符常量写入LCD
  126.    i++;                 //指向下一个字符   
  127.   }
  128.   WriteAddress(0x08);    //写显示地址,将在第2行第1列开始显示
  129.   i = 0;                //从第一个字符开始显示
  130.   while(Str1[i] != '\0')  //只要没有写到结束标志,就继续写
  131.    {      
  132.    WriteData(Str1[i]);   //将字符常量写入LCD
  133.    i++;                 //指向下一个字符   
  134.   }
  135.   WriteAddress(0xC0);    //写显示地址,将在第2行第1列开始显示
  136.   i = 0;                //从第一个字符开始显示
  137.   while(Str2[i] != '\0')  //只要没有写到结束标志,就继续写
  138.    {      
  139.    WriteData(Str2[i]);   //将字符常量写入LCD
  140.    i++;                 //指向下一个字符   
  141.   }
  142.   WriteAddress(0xC8);    //写显示地址,将在第2行第1列开始显示
  143.   i = 0;                //从第一个字符开始显示
  144.   while(Str3[i] != '\0')  //只要没有写到结束标志,就继续写
  145.    {      
  146.    WriteData(Str3[i]);   //将字符常量写入LCD
  147.    i++;                 //指向下一个字符   
  148.   }   
  149. }
  150. /*****************************************************
  151. 函数功能:显示电压的小数点
  152. ***************************************************/   
  153. void  display_dot(void)
  154. {         
  155.   WriteAddress(0xc5);   //写显示地址,将在第1行第10列开始显示     
  156.   WriteData('.');       //将小数点的字符常量写入LCD  
  157.   WriteAddress(0x0D);   //写显示地址,将在第1行第10列开始显示     
  158.   WriteData('.');                //将小数点的字符常量写入LCD
  159.   WriteAddress(0x05);   //写显示地址,将在第1行第10列开始显示     
  160.   WriteData('.');        
  161. }
  162. /*****************************************************
  163. 函数功能:显示电压的单位(V)
  164. ***************************************************/   
  165. void  display_V(void)
  166. {
  167. //    WriteAddress(0x06); //写显示地址,将在第2行第13列开始显示
  168. //  WriteData('v');     //将字符常量写入LCD
  169.     WriteAddress(0x0F); //写显示地址,将在第2行第13列开始显示
  170.   WriteData('s');     //将字符常量写入LCD           
  171.    
  172. }
  173. /*****************************************************
  174. 函数功能:显示电压的整数部分
  175. 入口参数:x
  176. ***************************************************/
  177. void display1()
  178. {
  179. // WriteAddress(0x02);    //写显示地址,将在第行第7列开始显示
  180. // WriteData(digit[x]);    //将百位数字的字符常量写入LCD
  181. WriteAddress(0x0A);    //写显示地址,将在第行第7列开始显示
  182. WriteData(digit_time[0]);    //将百位数字的字符常量写入LCD
  183. WriteAddress(0x0B);    //写显示地址,将在第行第7列开始显示
  184. WriteData(digit_time[1]);    //将百位数字的字符常量写入LCD
  185. WriteAddress(0x0C);    //写显示地址,将在第行第7列开始显示
  186. WriteData(digit_time[2]);    //将百位数字的字符常量写入LCD
  187. WriteAddress(0x0E);    //写显示地址,将在第行第7列开始显示
  188. WriteData(digit_time[3]);    //将百位数字的字符常量写入LCD
  189. WriteAddress(0xC2);    //写显示地址,将在第行第7列开始显示
  190. WriteData('0'+s/10000);    //将百位数字的字符常量写入LCD
  191. WriteAddress(0xC3);    //写显示地址,将在第行第7列开始显示
  192. WriteData('0'+s%10000/1000);    //将百位数字的字符常量写入LCD
  193. WriteAddress(0xC4);    //写显示地址,将在第行第7列开始显示
  194. WriteData('0'+s%1000/100);    //将百位数字的字符常量写入LCD
  195. WriteAddress(0xC6);    //写显示地址,将在第行第7列开始显示
  196. WriteData('0'+s%100/10);    //将百位数字的字符常量写入LCD
  197. WriteAddress(0xC7);    //写显示地址,将在第行第7列开始显示
  198. WriteData('0'+s%10);    //将百位数字的字符常量写入LCD
  199. WriteAddress(0x80+6);//在第2行第4列位置写入新数据
  200. WriteData(TAB[d]);
  201. WriteAddress(0x82);//在第2行第1列位置写入新数据
  202. WriteData(TAB[a]);
  203. WriteAddress(0x80+3);//在第2行第2列位置写入新数据
  204. WriteData(TAB[b]);
  205. WriteAddress(0x80+4);//在第2行第3列位置写入新数据
  206. WriteData(TAB[c]);
  207. }
  208. /*****************************************************
  209. 函数功能:显示电压的小数数部分
  210. 入口参数:x
  211. ***************************************************/
  212. // void display2(unsigned char x)
  213. //{
  214. //  unsigned char i,j;
  215. //
  216. // i=x/10;            //取十位(小数点后第一位)
  217. // j=x%10;            //取个位(小数点后第二位)
  218. //   WriteAddress(0x04);      //写显示地址,将在第1行第11列开始显示
  219. // WriteData(digit[i]);     //将小数部分的第一位数字字符常量写入LCD
  220. // WriteData(digit[j]);     //将小数部分的第一位数字字符常量写入LCD
  221. //}
  222. /*****************************************************
  223. 函数功能:将模拟信号转换成数字信号
  224. ***************************************************/
  225. unsigned char  A_D1()
  226. {
  227.   unsigned char i,dat;
  228.    CS1=1;   //一个转换周期开始
  229.    CLK1=0;  //为第一个脉冲作准备
  230.    CS1=0;  //CS置0,片选有效
  231.    DIO1=1;    //DIO置1,规定的起始信号  
  232.    CLK1=1;   //第一个脉冲
  233.    CLK1=0;   //第一个脉冲的下降沿,此前DIO必须是高电平
  234.    DIO1=1;   //DIO置1, 通道选择信号  
  235.    CLK1=1;   //第二个脉冲,第2、3个脉冲下沉之前,DI必须跟别输入两位数据用于选择通道,这里选通道CH0
  236.    CLK1=0;   //第二个脉冲下降沿
  237.    
  238.    DIO1=0;   //DI置0,选择通道0
  239.    CLK1=1;    //第三个脉冲
  240.    CLK1=0;    //第三个脉冲下降沿
  241.    DIO1=1;    //第三个脉冲下沉之后,输入端DIO失去作用,应置1
  242.    CLK1=1;    //第四个脉冲
  243.    for(i=0;i<8;i++)  //高位在前
  244.     {
  245.       CLK1=1;         //第四个脉冲
  246.       CLK1=0;
  247.       dat<<=1;       //将下面储存的低位数据向右移
  248.    dat|=(unsigned char)DIO1;   //将输出数据DIO通过或运算储存在dat最低位
  249.     }            
  250.     CS1=1;          //片选无效
  251.   return dat;  //将读书的数据返回     
  252.   }
  253. unsigned char  A_D2()
  254. {
  255.   unsigned char i,dat;
  256.    CS1=1;   //一个转换周期开始
  257.    CLK1=0;  //为第一个脉冲作准备
  258.    CS1=0;  //CS置0,片选有效
  259.    DIO1=1;    //DIO置1,规定的起始信号  
  260.    CLK1=1;   //第一个脉冲
  261.    CLK1=0;   //第一个脉冲的下降沿,此前DIO必须是高电平
  262.    DIO1=1;   //DIO置1, 通道选择信号  
  263.    CLK1=1;   //第二个脉冲,第2、3个脉冲下沉之前,DI必须跟别输入两位数据用于选择通道,这里选通道CH0
  264.    CLK1=0;   //第二个脉冲下降沿
  265.    
  266.    DIO1=1;   //DI置0,选择通道0
  267.    CLK1=1;    //第三个脉冲
  268.    CLK1=0;    //第三个脉冲下降沿
  269.    DIO1=1;    //第三个脉冲下沉之后,输入端DIO失去作用,应置1
  270.    CLK1=1;    //第四个脉冲
  271.    for(i=0;i<8;i++)  //高位在前
  272.     {
  273.       CLK1=1;         //第四个脉冲
  274.       CLK1=0;
  275.       dat<<=1;       //将下面储存的低位数据向右移
  276.    dat|=(unsigned char)DIO1;   //将输出数据DIO通过或运算储存在dat最低位
  277.     }            
  278.     CS1=1;          //片选无效
  279.   return dat;  //将读书的数据返回     
  280.   }
  281. unsigned char  A_D3()
  282. {
  283.   unsigned char i,dat;
  284.    CS2=1;   //一个转换周期开始
  285.    CLK2=0;  //为第一个脉冲作准备
  286.    CS2=0;  //CS置0,片选有效
  287.    DIO2=1;    //DIO置1,规定的起始信号  
  288.    CLK2=1;   //第一个脉冲
  289.    CLK2=0;   //第一个脉冲的下降沿,此前DIO必须是高电平
  290.    DIO2=1;   //DIO置1, 通道选择信号  
  291.    CLK2=1;   //第二个脉冲,第2、3个脉冲下沉之前,DI必须跟别输入两位数据用于选择通道,这里选通道CH0
  292.    CLK2=0;   //第二个脉冲下降沿
  293.    
  294.    DIO2=0;   //DI置0,选择通道0
  295.    CLK2=1;    //第三个脉冲
  296.    CLK2=0;    //第三个脉冲下降沿
  297.    DIO2=1;    //第三个脉冲下沉之后,输入端DIO失去作用,应置1
  298.    CLK2=1;    //第四个脉冲
  299.    for(i=0;i<8;i++)  //高位在前
  300.     {
  301.       CLK2=1;         //第四个脉冲
  302.       CLK2=0;
  303.       dat<<=1;       //将下面储存的低位数据向右移
  304.    dat|=(unsigned char)DIO2;   //将输出数据DIO通过或运算储存在dat最低位
  305.     }            
  306.     CS2=1;          //片选无效
  307.   return dat;  //将读书的数据返回     
  308.   }
  309. unsigned char  A_D4()
  310. {
  311.   unsigned char i,dat;
  312.    CS2=1;   //一个转换周期开始
  313.    CLK2=0;  //为第一个脉冲作准备
  314.    CS2=0;  //CS置0,片选有效
  315.    DIO2=1;    //DIO置1,规定的起始信号  
  316.    CLK2=1;   //第一个脉冲
  317.    CLK2=0;   //第一个脉冲的下降沿,此前DIO必须是高电平
  318.    DIO2=1;   //DIO置1, 通道选择信号  
  319.    CLK2=1;   //第二个脉冲,第2、3个脉冲下沉之前,DI必须跟别输入两位数据用于选择通道,这里选通道CH0
  320.    CLK2=0;   //第二个脉冲下降沿
  321.    
  322.    DIO2=1;   //DI置0,选择通道0
  323.    CLK2=1;    //第三个脉冲
  324.    CLK2=0;    //第三个脉冲下降沿
  325.    DIO2=1;    //第三个脉冲下沉之后,输入端DIO失去作用,应置1
  326.    CLK2=1;    //第四个脉冲
  327.    for(i=0;i<8;i++)  //高位在前
  328.     {
  329.       CLK2=1;         //第四个脉冲
  330.       CLK2=0;
  331.       dat<<=1;       //将下面储存的低位数据向右移
  332.    dat|=(unsigned char)DIO2;   //将输出数据DIO通过或运算储存在dat最低位
  333.     }            
  334.     CS2=1;          //片选无效
  335.   return dat;  //将读书的数据返回     
  336. }

  337. void dischg()
  338. {
  339.         digit_time[3]=sec%10+0x30;
  340.         digit_time[2]=sec%100/10+0x30;
  341.         digit_time[1]=sec%1000/100+0x30;
  342.         digit_time[0]=sec/1000+0x30;        

  343. }

  344. void keyinput_data()
  345. {
  346. //unsigned char a=0;
  347. //unsigned char k=0;//光标
  348. //   LcdInitiate();
  349. //        SW0=SW1=SW2=1;
  350.         //LCD1602_Write_CMD(0x80); //第1行1列
  351.         //for(n=0;n<<16;n++)
  352.         //LCD1602_Write_DAT(TAB1[n]);
  353. //        WriteAddress(0x82);//第1行第3列
  354. //        WriteData(TAB[a]);
  355.         while(1)
  356.         {        
  357.                 if(SW0==0)
  358.                 {
  359.                         delaynms(5);
  360.                         if(SW0==0)
  361.                         {
  362.                                 p++;
  363.                                 TR0=0;
  364.                                 sec=0;
  365.                                 dischg();
  366.                                 while(!SW0);
  367.                                 if(p>4)p=1;
  368.                         }
  369.                 }
  370.                 if(p==1)
  371.                 {
  372.                         AD_val1= A_D1();    //进行A/D1转换
  373.                         AD_val2= A_D2();    //进行A/D2转换
  374.                         WriteAddress(0xcf);//在第2行第3列位置写入新数据
  375.                         WriteData('1');
  376.                 }
  377.                 if(p==2)
  378.                 {
  379.                         AD_val1= A_D3();    //进行A/D1转换
  380.                         AD_val2= A_D4();    //进行A/D2转换
  381.                         WriteAddress(0xcf);//在第2行第3列位置写入新数据
  382.                         WriteData('2');
  383.                 }
  384.                 if(p==3)
  385.                 {
  386.                         AD_val1= A_D5();    //进行A/D1转换
  387.                         AD_val2= A_D6();    //进行A/D2转换
  388.                         WriteAddress(0xcf);//在第2行第3列位置写入新数据
  389.                         WriteData('3');
  390.                 }
  391.                 if(p==4)
  392.                 {
  393.                         AD_val1= A_D7();    //进行A/D1转换
  394.                         AD_val2= A_D8();    //进行A/D2转换
  395.                         WriteAddress(0xcf);//在第2行第3列位置写入新数据
  396.                         WriteData('4');
  397.                 }
  398.                 if(SW1==0)
  399.                 {
  400.                         delaynms(5);
  401.                         if(SW1==0)
  402.                         {
  403.                                 k++;
  404.                         }
  405.                 }
  406.                 if(k==1)
  407.                 {
  408.                         while(!SW1);
  409.                         WriteAddress(0x82);//第2行第1列
  410.                         WriteAddress(0x0f);//光标闪烁
  411.                 }        
  412.                 if(k==2)
  413.                 {
  414.                         while(!SW1);
  415.                         WriteAddress(0x80+3);//第2行第2列
  416.                         WriteAddress(0x0f);
  417.                 }
  418.                 if(k==3)
  419.                 {
  420.                         while(!SW1);
  421.                         WriteAddress(0x80+4);//第2行第3列
  422.                         WriteAddress(0x0f);
  423.                 }
  424.                 if(k==4)
  425.                 {
  426.                         while(!SW1);
  427.                         WriteAddress(0x80+5);//第2行第4列
  428.                         WriteAddress(0x0f);
  429.                 }
  430.                 if(k==5)
  431.                 {
  432.                         while(!SW1);
  433.                         k=1;//光标标志清零
  434.                         WriteAddress(0x0c);//光标关闭
  435.                 }
  436.                 if(k==1)
  437.                 {
  438.                         if(SW2==0)
  439.                         {
  440.                                 delaynms(5);
  441.                                 if(SW2==0)
  442.                                 {
  443.                                         while(!SW2);
  444.                                         a=(a<9)?a+1:0;//若i小于9则a=a++,若a》=9则清除为0
  445.                                 }
  446.                         }
  447.                 }
  448.                 if(k==2)
  449.                 {
  450.                         if(SW2==0)
  451.                         {
  452.                                 delaynms(5);
  453.                                 if(SW2==0)
  454.                                 {
  455.                                         while(!SW2);
  456.                                         b=(b<9)?b+1:0;//若i小于9则a=a++,若a》=9则清除为0
  457.                                 
  458.                                 }
  459.                         }
  460.                 }
  461.                 if(k==3)
  462.                 {
  463.                         if(SW2==0)
  464.                         {
  465.                                 delaynms(5);
  466.                                 if(SW2==0)
  467.                                 {
  468.                                         while(!SW2);
  469.                                         c=(c<9)? c+1:0;//若i小于9则a=a++,若a》=9则清除为0
  470.                         
  471.                                 }
  472.                         }
  473.                 }
  474.                 if(k==4)
  475.                 {
  476.                         if(SW2==0)
  477.                         {
  478.                                 delaynms(5);
  479.                                 if(SW2==0)
  480.                                 {
  481.                                         while(!SW2);
  482.                                         d=(d<9)? d+1:0;//若i小于9则a=a++,若a》=9则清除为0

  483.                                 }
  484.                         }
  485.                 }
  486.         break;
  487.         }        
  488. }
  489. //void ext0() interrupt 0
  490. //{
  491. //        key++;
  492. //        key%=3;
  493. //}
  494. void t0isr() interrupt 1        //秒计时
  495. {
  496.         static unsigned int Time;
  497.         TH0=(65536-1000)/256;
  498.         TL0=(65536-1000)%256;
  499.         Time++;
  500.         if(Time==78)                                 
  501.         {
  502.                 Time=0;
  503. //                dat1++;
  504. //                if(dat1>=10)
  505. //                {
  506. //                dat1=0;
  507.                 sec++;
  508.                 s=(int)(((float)sum/60*sec));
  509.                 if(sec>10000)sec=0;
  510. //                }
  511.         dischg();
  512.         }
  513. }  
  514.   

  515. /*****************************************************
  516. 函数功能:主函数
  517. ***************************************************/
  518. main(void)
  519. {
  520. //  unsigned int AD_val;    //储存A/D转换后的值
  521. //  unsigned char Int,Dec;   //分别储存转换后的整数部分与小数部分
  522.    LcdInitiate();         //将液晶初始化
  523. //   delaynms(5);           //延时5ms给硬件一点反应时间
  524. display_volt();        //显示温度说明
  525.    display_dot();         //显示温度的小数点
  526.    display_V();           //显示温度的单位
  527.         TMOD=0x01;
  528.         TH0=(65536-1000)/256;
  529.         TL0=(65536-1000)%256;
  530.         TR0=0;
  531.         ET0=1;
  532.         EA=1;
  533.         dischg();
  534. //        lcd1602_Display(digit_time,1);
  535.    while(1)
  536.       {
  537. //    AD_val1= A_D1();    //进行A/D1转换
  538. //        AD_val2= A_D2();    //进行A/D2转换         
  539. //    Int=(AD_val)/51;  //计算整数部分
  540. //    Dec=(AD_val%51)*100/51;    //计算小数部分
  541.         keyinput_data();
  542. //    display(Dec);     //显示小数部分
  543.     display1();
  544.         sum=a*1000+b*100+c*100+d;
  545.         if(AD_val1>1)
  546.         {
  547.                 TR0=1;
  548.         }
  549.         if(AD_val2>1)
  550.         {                                                            
  551.                 TR0=0;
  552.         }



  553. /*****************************************************
  554. 函数功能:按键启动计时
  555. ***************************************************/                 
  556. //        switch(key)
  557. //                {
  558. //                case 0:TR0=0;break;
  559. //                case 1:TR0=1;break;
  560. //                case 2:sec=0;dischg();break;
  561. //                }
  562.   }
  563.       
  564. }
复制代码


评分

参与人数 1黑币 +50 收起 理由
admin + 50

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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