找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2490|回复: 2
收起左侧

蓝桥杯单片机第三届决赛—门禁系统源程序资料

[复制链接]
ID:427459 发表于 2019-8-1 14:12 | 显示全部楼层 |阅读模式
蓝桥杯单片机比赛国家二等奖 对代码有疑问的可以+qq讨论

分享一些平时练习的代码
TIM截图20190801140309.png
这是第三届国赛的要求
TIM截图20190801140322.png
详细代码主函数如图所示
采用CT170D系开发板 STC15F2K60S2单片机控制

为了简单方便  我将所有的代码整理成了一个c文件 方便初学者下载使用

单片机源程序如下:
  1. #include<stc15f2k60s2.h>
  2. #include "intrins.h"

  3. #define DELAY_TIME 5
  4. #define somenop {_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();}
  5. #define SlaveAddrW 0xA0
  6. #define SlaveAddrR 0xA1

  7. #define uint unsigned int
  8. #define uchar unsigned char
  9. uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff};

  10. //***************iic***********************//
  11. sbit SD = P2^1;  /* êy?Y?? */
  12. sbit SCL = P2^0;  /* ê±?ó?? */
  13. void IIC_Start(void);
  14. void IIC_Stop(void);  
  15. bit IIC_WaitAck(void);  
  16. void IIC_SendAck(bit ackbit);
  17. void IIC_SendByte(unsigned char byt);
  18. unsigned char IIC_RecByte(void);
  19. void EEPROM_write(add,dat);
  20. uchar  EEPROM_read(add);
  21. //********************ds1302*****************//
  22. sbit SCK=P1^7;               
  23. sbit SDA=P2^3;               
  24. sbit RST = P1^3;   // DS1302?′??
  25. void Write_Ds1302(unsigned char temp);
  26. void Write_Ds1302_Byte( unsigned char address,unsigned char dat );
  27. unsigned char Read_Ds1302_Byte( unsigned char address );
  28. void DS_init();
  29. void DS_get();


  30. void allinit();
  31. void keyscan16();
  32. void display1(uchar yi,  uchar  er);
  33. void display2(uchar san, uchar  si);
  34. void display3(uchar wu,  uchar  liu);
  35. void display4(uchar qi,  uchar  ba);
  36. void delayms(int ms);


  37. char num=-2;
  38. uchar yi,er,san,si,wu,liu,qi,ba;
  39. uchar temp;
  40. uchar shezhi,queren,fuwei,tuichu;
  41. uchar shuzhi;
  42. uchar shijian[]={0,0,6,0,0,0,0};
  43. uchar t_flag,tt,n,flag;
  44. uchar beeflag,tttt,nn,i;
  45. uchar wei=0;
  46. uint ttt;
  47. uchar qian,zhong,hou,eeqian,eezhong,eehou;

  48. uchar shiflag=0,xiuflag=0,xincode=0;
  49. //**************CS*******************//
  50. sbit TX = P1^0;  //·¢é?òy??
  51. sbit RX = P1^1;  //?óê?òy??
  52. uint t,distance;
  53. uchar mode;
  54. void CS_get();
  55. void send_wave();
  56. void Timer0Init(void)        ;
  57. void Timer1Init(void)        ;


  58. void main()
  59. {
  60.         allinit();
  61. //        EEPROM_write(0x01,65);delayms(5);
  62. //        EEPROM_write(0x02,43);delayms(5);
  63. //        EEPROM_write(0x03,21);delayms(5);
  64.         DS_init();
  65.         Timer0Init() ;
  66.         Timer1Init() ;
  67.         EA=1;ET0=1;TR0=1;
  68.        
  69.         while(1)
  70.         {
  71. //                shuzhi=EEPROM_read(0x01);delayms(5);
  72.                 keyscan16();
  73.                 DS_get();
  74. //                if(num==5)
  75. //                {
  76. //                        yi=1;er=2;san=3;si=4;wu=5;liu=6;qi=7;ba=8;
  77. //                }
  78.                
  79. //                yi=shuzhi/100;er=shuzhi%100/10;san=shuzhi%10;
  80. //                si=11;wu=11;liu=11;qi=11;ba=11;
  81.         if      (shezhi==0)
  82.         {
  83.                 if((shijian[2]>=7)&&(shijian[2]<=22))          mode=1;
  84.                 else if(((shijian[2]<7)||(shijian[2]>22)))    {mode=2;shiflag=1;}
  85.         }
  86.                
  87.   else if (shezhi==1)     {mode=2;xiuflag=1;shiflag=0;}
  88.                
  89.                
  90.                
  91.                 if((mode==1)&&(xincode==0))
  92.                 {
  93.                         CS_get();       
  94.       if(distance<=30)
  95.                                 {
  96.                                         flag=1;
  97.                                 }
  98.                         yi=shijian[2]/10;er=shijian[2]%10;
  99.                         san=10;si=shijian[1]/10;wu=shijian[1]%10;
  100.                         liu=10;qi=shijian[0]/10;ba=shijian[0]%10;
  101.                 }                               
  102.                
  103.                 else if((mode==2)&&(xincode==0))
  104.                 {
  105.                         if(num==-2)
  106.                         {
  107.                                 yi=10;er=10;
  108.                           san=11;si=11;wu=11;
  109.                           liu=11;qi=11;ba=11;
  110.                         }
  111.                         else if(num>=-1)
  112.                         {
  113.                                 if(num>=0)
  114.                                 {
  115.                                         temp=num;
  116.                                         num=-1;
  117.                                         if(wei==0)
  118.                                                 {
  119.                                                         san=temp;si=11;wu=11;liu=11;qi=11;ba=11;
  120.                                                         wei++;
  121.                                                 }
  122.                                                 else if(wei==1)
  123.                                                 {
  124.                                                         san=san;si=temp;wu=11;liu=11;qi=11;ba=11;
  125.                                                         wei++;
  126.                                                 }
  127.                                                 else if(wei==2)
  128.                                                 {
  129.                                                         san=san;si=si;wu=temp;liu=11;qi=11;ba=11;
  130.                                                         wei++;
  131.                                                 }
  132.                                                 else if(wei==3)
  133.                                                 {
  134.                                                         san=san;si=si;wu=wu;liu=temp;qi=11;ba=11;
  135.                                                         wei++;
  136.                                                 }
  137.                                                 else if(wei==4)
  138.                                                 {
  139.                                                         san=san;si=si;wu=wu;liu=liu;qi=temp;ba=11;
  140.                                                         wei++;
  141.                                                 }
  142.                                                 else if(wei==5)
  143.                                                 {
  144.                                                         san=san;si=si;wu=wu;liu=liu;qi=qi;ba=temp;
  145.                                                         wei++;
  146.                                                 }
  147.                                 }
  148.                                 else if(num==-1)
  149.                                 {
  150.                                            san=san;si=si;wu=wu;liu=liu;qi=qi;ba=ba;
  151.                                 }
  152.                  }
  153.                        
  154.                         if((wei==6)&&(queren==1))
  155.                         {
  156.                                 queren=0;
  157.                                 wei=0;
  158.                                 num=-2;
  159.                                 qian=san*10+si;zhong=wu*10+liu;hou=qi*10+ba;
  160.                                 eeqian = EEPROM_read(0x01);delayms(5);
  161.                                 eezhong= EEPROM_read(0x02);delayms(5);
  162.                                 eehou  = EEPROM_read(0x03);delayms(5);
  163.                                 if(qian==eeqian)
  164.                                         if(zhong==eezhong)
  165.                                                 if(hou=eehou)
  166.                                                 {
  167.                                                         if(shiflag==1)
  168.                                                               {flag=1;}
  169.                                                         else if(xiuflag==1)
  170.                                                         {
  171.                                                                 xincode=1;
  172.                                                         }
  173.                                                 }
  174.                                                 else  i++;
  175.                                         else  i++;
  176.                                 else i++;
  177.                                 if(i==3)
  178.                                 {
  179.                                         beeflag=1;
  180.                                         i=0;
  181.                                         if(xiuflag==1)  {xiuflag=0;shezhi=0;}
  182.                                 }               
  183.                   }
  184.                 }
  185.                
  186.                 if(xincode==1)
  187.                 {
  188.                         if(num==-2)
  189.                         {
  190.                                 yi=11;er=10;
  191.                           san=11;si=11;wu=11;
  192.                           liu=11;qi=11;ba=11;
  193.                         }
  194.                         if(num>=0)
  195.                                 {
  196.                                         temp=num;
  197.                                         num=-1;
  198.                                         if(wei==0)
  199.                                                 {
  200.                                                         san=temp;si=11;wu=11;liu=11;qi=11;ba=11;
  201.                                                         wei++;
  202.                                                 }
  203.                                                 else if(wei==1)
  204.                                                 {
  205.                                                         san=san;si=temp;wu=11;liu=11;qi=11;ba=11;
  206.                                                         wei++;
  207.                                                 }
  208.                                                 else if(wei==2)
  209.                                                 {
  210.                                                         san=san;si=si;wu=temp;liu=11;qi=11;ba=11;
  211.                                                         wei++;
  212.                                                 }
  213.                                                 else if(wei==3)
  214.                                                 {
  215.                                                         san=san;si=si;wu=wu;liu=temp;qi=11;ba=11;
  216.                                                         wei++;
  217.                                                 }
  218.                                                 else if(wei==4)
  219.                                                 {
  220.                                                         san=san;si=si;wu=wu;liu=liu;qi=temp;ba=11;
  221.                                                         wei++;
  222.                                                 }
  223.                                                 else if(wei==5)
  224.                                                 {
  225.                                                         san=san;si=si;wu=wu;liu=liu;qi=qi;ba=temp;
  226.                                                         wei++;
  227.                                                 }
  228.                                 }
  229.                                 else if(num==-1)
  230.                                 {
  231.                                            san=san;si=si;wu=wu;liu=liu;qi=qi;ba=ba;
  232.                                 }
  233.                                
  234.                                 if(tuichu==1)
  235.                                 {
  236.                                         tuichu=0;
  237.                                         num=-2;
  238.                                         xincode=0;
  239.                                         wei=0;
  240.                                         shezhi=0;
  241.                                 }
  242.                   
  243.                
  244.                         if((wei==6)&&(queren==1))
  245.                         {
  246.                                 queren=0;
  247.                                 wei=0;
  248.                                 num=-2;
  249.                                 qian=san*10+si;zhong=wu*10+liu;hou=qi*10+ba;
  250.                                   EEPROM_write(0x01,qian);delayms(5);
  251.                 EEPROM_write(0x02,zhong);delayms(5);
  252.                 EEPROM_write(0x03,hou);delayms(5);
  253.                                
  254.                                 shezhi=0;
  255.                                 xincode=0;
  256.                         }
  257.                 }
  258.                
  259.                 if(fuwei==1)
  260.                 {
  261.                           fuwei=0;
  262.                                 EEPROM_write(0x01,65);delayms(5);
  263.                                 EEPROM_write(0x02,43);delayms(5);
  264.                                 EEPROM_write(0x03,21);delayms(5);
  265.                 }
  266.                        
  267.                


  268.                        
  269.                
  270.                
  271.                
  272.     if(beeflag==0) {P2=0XA0;P0=0X00;}
  273.                 display1(yi,er);
  274.                 display2(san,si);
  275.                 display3(wu,liu);
  276.                 display4(qi,ba);
  277.         }
  278. }

  279. void CS_get()
  280. {
  281.         if(t_flag==1)
  282.         {
  283.                 send_wave();
  284.                 TR1 = 1;
  285.                 while((RX==1)&&(TF1==0));
  286.                 TR1 = 0;
  287.                
  288.                 if(TF1==1)
  289.                 {
  290.                         distance=9999;
  291.                         TF1=0;
  292.                 }
  293.                 else
  294.                 {
  295.                         t =   TH1;
  296.                         t <<= 8;
  297.                         t |=  TL1;
  298.                         distance = (uint)(t*0.017);
  299.                         distance = distance/12;
  300.                        
  301.                 }
  302.                
  303.                 TH1=0;
  304.                 TL1=0;
  305.                
  306.                
  307.                
  308.         }
  309. }

  310. void send_wave()
  311. {
  312.         uchar i=8;
  313.        
  314.         do
  315.         {
  316.                 TX=1;
  317.                 somenop;somenop;somenop;somenop;somenop;somenop;somenop;somenop;somenop;somenop;
  318.                 TX=0;
  319.                 somenop;somenop;somenop;somenop;somenop;somenop;somenop;somenop;somenop;somenop;
  320.         }while(i--);
  321. }

  322. void Timer0Init(void)                //2毫秒@11.0592MHz
  323. {
  324.         AUXR |= 0x80;                //定时器时钟1T模式
  325.         TMOD &= 0xF0;                //设置定时器模式
  326.         TL0 = 0x9A;                //设置定时初值
  327.         TH0 = 0xA9;                //设置定时初值
  328.         TF0 = 0;                //清除TF0标志
  329.         TR0 = 1;                //定时器0开始计时
  330. }

  331. void Timer1Init(void)                //2毫秒@11.0592MHz
  332. {
  333.         AUXR |= 0x40;                //定时器时钟1T模式
  334.         TMOD &= 0x0F;                //设置定时器模式
  335. }

  336. void Timer0() interrupt 1
  337. {
  338.         tt++;
  339.         if(tt==100)
  340.         {
  341.                 t_flag=1;
  342.                 tt=0;
  343.         }
  344.         if(flag==1)
  345.         {
  346.                 ttt++;
  347.                 P2=0XA0;
  348.                 P0=0X10;
  349.                 if(ttt==500)
  350.                 {
  351.                         ttt=0;
  352.                         n++;
  353.                         if(n==5) {n=0;P2=0XA0;P0=0X00;flag=0;}
  354.                 }
  355.         }
  356.         if(beeflag==1)
  357.         {       
  358.                 tttt++;
  359.                 P2=0XA0;
  360.           P0=0X40;
  361.                 if(tttt==500)
  362.                 {
  363.                         tttt=0;
  364.                         nn++;
  365.                         if(nn==3) {nn=0;P2=0XA0;P0=0X00;beeflag=0;}
  366.                 }
  367.                
  368.         }
  369. }



  370. void allinit()
  371. {
  372.                         P2=0X80;
  373.             P0=0XFF;
  374.        
  375.                         P2=0XA0;
  376.                         P0=0X00;
  377.        
  378.                         P2=0XC0;
  379.                         P0=0XFF;
  380.                         P2=0XFF;
  381.                         P0=0XFF;
  382. }

  383. void keyscan16()
  384. {
  385.         //first
  386.         P44=0;P42=1;P3=0X7F;
  387.         temp=P3;
  388.         temp=temp&0x0f;
  389.         if(temp!=0x0f)
  390.         {
  391.                 delayms(5);
  392.                 temp=P3;
  393.                 temp=temp&0x0f;
  394.                 if(temp!=0x0f)
  395.                 {
  396.                         temp=P3;
  397.                         switch(temp)
  398.                         {
  399.                                 case 0x7e:         num=0; break;
  400.                                 case 0x7d:         num=4; break;
  401.                                 case 0x7b:         num=8; break;

  402.                         }
  403.                         while(temp!=0x0f)
  404.                         {
  405.                                 temp=P3;
  406.                                 temp=temp&0x0f;
  407.                         }
  408.                 }
  409.         }
  410.        
  411.          //Second
  412.         P44=1;P42=0;P3=0XbF;
  413.         temp=P3;
  414.         temp=temp&0x0f;
  415.         if(temp!=0x0f)
  416.         {
  417.                 delayms(5);
  418.                 temp=P3;
  419.                 temp=temp&0x0f;
  420.                 if(temp!=0x0f)
  421.                 {
  422.                         temp=P3;
  423.                         switch(temp)
  424.                         {
  425.                                 case 0xbe:         num=1; break;
  426.                                 case 0xbd:         num=5; break;
  427.                                 case 0xbb:         num=9; break;

  428.                         }
  429.                         while(temp!=0x0f)
  430.                         {
  431.                                 temp=P3;
  432.                                 temp=temp&0x0f;
  433.                         }
  434.                 }
  435.         }
  436.        
  437.         //third
  438.                 P44=1;P42=1;P3=0XdF;
  439.         temp=P3;
  440.         temp=temp&0x0f;
  441.         if(temp!=0x0f)
  442.         {
  443.                 delayms(5);
  444.                 temp=P3;
  445.                 temp=temp&0x0f;
  446.                 if(temp!=0x0f)
  447.                 {
  448.                         temp=P3;
  449.                         switch(temp)
  450.                         {
  451.                                 case 0xde:         num=2; break;
  452.                                 case 0xdd:         num=6; break;
  453.                                 case 0xdb:         shezhi=1; break;
  454.                                 case 0xd7:  queren=1; break;
  455.                         }
  456.                         while(temp!=0x0f)
  457.                         {
  458.                                 temp=P3;
  459.                                 temp=temp&0x0f;
  460.                         }
  461.                 }
  462.         }
  463.        
  464.         //fourth
  465.         P44=1;P42=1;P3=0XEF;
  466.         temp=P3;
  467.         temp=temp&0x0f;
  468.         if(temp!=0x0f)
  469.         {
  470.                 delayms(5);
  471.                 temp=P3;
  472.                 temp=temp&0x0f;
  473.                 if(temp!=0x0f)
  474.                 {
  475.                         temp=P3;
  476.                         switch(temp)
  477.                         {
  478.                                 case 0xee:         num=3; break;
  479.                                 case 0xed:         num=7; break;
  480.                                 case 0xeb:         fuwei=1; break;
  481.                                 case 0xe7:         tuichu=1; break;
  482.                         }
  483.                         while(temp!=0x0f)
  484.                         {
  485.                                 temp=P3;
  486.                                 temp=temp&0x0f;
  487.                         }
  488.                 }
  489.         }
  490.          
  491.        
  492.        
  493. }

  494. void display1(uchar yi,uchar er)
  495. {
  496.         P2=0XC0;
  497.         P0=0X01;
  498.         P2=0XFF;
  499.         P0=tab[yi];
  500.         delayms(1);
  501.        
  502.   P2=0XC0;
  503.         P0=0X02;
  504.         P2=0XFF;
  505.         P0=tab[er];
  506.         delayms(1);
  507. }
  508. void display2(uchar san,uchar si)
  509. {
  510.         P2=0XC0;
  511.         P0=0X04;
  512.         P2=0XFF;
  513.         P0=tab[san];
  514.         delayms(1);
  515.        
  516.   P2=0XC0;
  517.         P0=0X08;
  518.         P2=0XFF;
  519.         P0=tab[si];
  520.         delayms(1);
  521. }
  522. void display3(uchar wu,uchar liu)
  523. {
  524.         P2=0XC0;
  525.         P0=0X10;
  526.         P2=0XFF;
  527.         P0=tab[wu];
  528.         delayms(1);
  529.        
  530.   P2=0XC0;
  531.         P0=0X20;
  532.         P2=0XFF;
  533.         P0=tab[liu];
  534.         delayms(1);
  535. }
  536. void display4(uchar qi,uchar ba)
  537. {
  538.         P2=0XC0;
  539.         P0=0X40;
  540.         P2=0XFF;
  541.         P0=tab[qi];
  542.         delayms(1);
  543.        
  544.   P2=0XC0;
  545.         P0=0X80;
  546.         P2=0XFF;
  547.         P0=tab[ba];
  548.         delayms(1);
  549. }

  550. void delayms(int ms)
  551. {
  552.         int i,j;
  553.         for(i=ms;i>0;i--)
  554.                 for(j=845;j>0;j--);
  555. }

  556. /**************iic***************************/
  557. void EEPROM_write(add,dat)
  558. {
  559.         IIC_Start();
  560.         IIC_SendByte(0xa0);
  561.   IIC_WaitAck();
  562.   IIC_SendByte(add);
  563.         IIC_WaitAck();
  564.   IIC_SendByte(dat);
  565.         IIC_WaitAck();
  566.         IIC_Stop();
  567. }

  568. uchar  EEPROM_read(add)
  569. {
  570.         uchar temp1;
  571.         IIC_Start();
  572.         IIC_SendByte(0xa0);
  573.   IIC_WaitAck();
  574.   IIC_SendByte(add);
  575.         IIC_WaitAck();
  576.   IIC_Stop();
  577.        
  578.         IIC_Start();
  579.         IIC_SendByte(0xa1);
  580.   IIC_WaitAck();
  581.         temp1=IIC_RecByte();
  582.         IIC_Stop();
  583.        
  584.         return temp1;
  585.        
  586. }

  587. void IIC_Delay(unsigned char i)
  588. {
  589.     do{_nop_();}
  590.     while(i--);        
  591. }
  592. //×ü?????ˉì??t
  593. void IIC_Start(void)
  594. {
  595.     SD = 1;
  596.     SCL = 1;
  597.     IIC_Delay(DELAY_TIME);
  598.     SD = 0;
  599.     IIC_Delay(DELAY_TIME);
  600.     SCL = 0;       
  601. }

  602. //×ü??í£?1ì??t
  603. void IIC_Stop(void)
  604. {
  605.     SD = 0;
  606.     SCL = 1;
  607.     IIC_Delay(DELAY_TIME);
  608.     SD = 1;
  609.     IIC_Delay(DELAY_TIME);
  610. }

  611. //·¢?íó|′e
  612. void IIC_SendAck(bit ackbit)
  613. {
  614.     SCL = 0;
  615.     SD = ackbit;                                          // 0£oó|′e£?1£o·?ó|′e
  616.     IIC_Delay(DELAY_TIME);
  617.     SCL = 1;
  618.     IIC_Delay(DELAY_TIME);
  619.     SCL = 0;
  620.     SD = 1;
  621.     IIC_Delay(DELAY_TIME);
  622. }

  623. //μè′yó|′e
  624. bit IIC_WaitAck(void)
  625. {
  626.     bit ackbit;
  627.        
  628.     SCL  = 1;
  629.     IIC_Delay(DELAY_TIME);
  630.     ackbit = SD;
  631.     SCL = 0;
  632.     IIC_Delay(DELAY_TIME);
  633.     return ackbit;
  634. }

  635. //í¨1yI2C×ü??·¢?íêy?Y
  636. void IIC_SendByte(unsigned char byt)
  637. {
  638.     unsigned char i;

  639.     for(i=0; i<8; i++)
  640.     {
  641.         SCL  = 0;
  642.         IIC_Delay(DELAY_TIME);
  643.         if(byt & 0x80) SD  = 1;
  644.         else SD  = 0;
  645.         IIC_Delay(DELAY_TIME);
  646.         SCL = 1;
  647.         byt <<= 1;
  648.         IIC_Delay(DELAY_TIME);
  649.     }
  650.     SCL  = 0;  
  651. }

  652. //′óI2C×ü??é??óê?êy?Y
  653. unsigned char IIC_RecByte(void)
  654. {
  655.     unsigned char i, da;
  656.     for(i=0; i<8; i++)
  657.     {   
  658.             SCL = 1;
  659.         IIC_Delay(DELAY_TIME);
  660.         da <<= 1;
  661.         if(SD) da |= 1;
  662.         SCL = 0;
  663.         IIC_Delay(DELAY_TIME);
  664.     }
  665.     return da;   
  666. }
  667. /******************DS1302*********************/
  668. void DS_init()
  669. {
  670.         uchar i,add;
  671.         add=0x80;
  672.         Write_Ds1302_Byte( 0x8e,0x00 );
  673.         for(i=0;i<7;i++)
  674.         {
  675.                         Write_Ds1302_Byte( add,shijian[i] );
  676.                   add=add+2;
  677.         }
  678.         Write_Ds1302_Byte( 0x8e,0x80 );
  679. }

  680. void DS_get()
  681. {
  682.         uchar i,add;
  683.         add=0x81;
  684.         for(i=0;i<7;i++)
  685.         {
  686.                 shijian[i]=Read_Ds1302_Byte ( add );
  687.                 add=add+2;
  688.         }
  689.         Write_Ds1302_Byte( 0x8e,0x80 );
  690. }
  691.        
  692. void Write_Ds1302(unsigned  char temp)
  693. {
  694.         unsigned char i;
  695.         for (i=0;i<8;i++)            
  696.         {
  697.                 SCK=0;
  698.                 SDA=temp&0x01;
  699.                 temp>>=1;
  700.                 SCK=1;
  701.         }
  702. }   

  703. void Write_Ds1302_Byte( unsigned char address,unsigned char dat )     
  704. {
  705.         RST=0;        _nop_();
  706.         SCK=0;        _nop_();
  707.         RST=1;         _nop_();  
  708.         Write_Ds1302(address);       
  709.         Write_Ds1302((dat/10<<4)|dat%10);               
  710.         RST=0;
  711. }

  712. unsigned char Read_Ds1302_Byte ( unsigned char address )
  713. {
  714.         unsigned char i,temp=0x00,dat1,dat2;
  715.         RST=0;        _nop_();
  716.         SCK=0;        _nop_();
  717.         RST=1;        _nop_();
  718.         Write_Ds1302(address);
  719.         for (i=0;i<8;i++)        
  720.         {               
  721.                 SCK=0;
  722.                 temp>>=1;       
  723.                 if(SDA)
  724.                 temp|=0x80;       
  725.                 SCK=1;
  726.         }
  727.         RST=0;        _nop_();
  728.         SCK=0;        _nop_();
  729.         SCK=1;        _nop_();
  730.         SDA=0;        _nop_();
  731.         SDA=1;        _nop_();
  732.        
  733.         dat1=temp/16;
  734.         dat2=temp%16;
  735.         temp=dat1*10+dat2;
  736.         return (temp);                       
  737. }
复制代码

所有资料51hei提供下载:
3:蓝桥杯单片机第三届决赛试题-门禁系统.pdf (1.77 MB, 下载次数: 18)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:637022 发表于 2019-11-8 11:53 | 显示全部楼层
不行,生成不了hex文件
回复

使用道具 举报

ID:643131 发表于 2019-11-17 21:08 | 显示全部楼层

没少

本帖最后由 1475963 于 2019-11-21 12:59 编辑

#include<stc15f2k60s2.h> 少个空格
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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