⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 7290.lst

📁 用89s52,访问ZLG7290(LED数码显示)
💻 LST
📖 第 1 页 / 共 4 页
字号:
 709   1          {
 710   2                  Speak = False;
 711   2                      if (f) delay3(200); else delay3(100);
 712   2                      Speak = True;
 713   2                      if (i>0) delay3(100);
 714   2              }
 715   1      }
 716          void Watch(void)
 717          {
 718   1             WDTRST       = 0x1e;
 719   1                 WDTRST       = 0xe1;
 720   1      }
 721          uchar  Zlg_read(uchar i)
 722          {
 723   1          uchar x;
 724   1              start();                        /*   开始   */
 725   1          shift8(0x70);                     /* 写控制码 */
 726   1          ack();
 727   1              shift8(i);                      /* 发地址 */
 728   1          ack();                          /*  应答  */
 729   1              start();
 730   1              shift8(0x71);
 731   1          ack();
 732   1      
 733   1              SDA = True; delay(1);
 734   1          for (x=0; x<8; x++)             /* 读数据 */
 735   1              {
C51 COMPILER V7.09   7290                                                                  08/23/2004 17:15:04 PAGE 13  

 736   2                   AD = AD * 2;
 737   2                       SCL = True;  delay(1); 
 738   2               AD_0 = SDA;
 739   2                       SCL = False; delay(1);
 740   2              }
 741   1          stop();
 742   1          return(AD);
 743   1      }
 744          void Zlg_write(uchar *p)
 745          {
 746   1           start();
 747   1           shift8(0x70);//SendByte(0x70);
 748   1               ack();
 749   1               Watch();
 750   1           shift8(*p++);//SendByte(address);
 751   1               ack();
 752   1               shift8(*p++);//SendByte(i);
 753   1               ack();
 754   1           shift8(*p);
 755   1               ack();
 756   1               stop();
 757   1      }
 758          void Zlg_writebyte(uchar address,uchar i)
 759          {
 760   1           start();
 761   1           shift8(0x70);
 762   1               ack();
 763   1               Watch();
 764   1           shift8(address);
 765   1               ack();
 766   1               shift8(i);
 767   1               ack();
 768   1               stop();
 769   1      }
 770          void delay(uchar i)
 771          { 
 772   1          while (i > 0)
 773   1              {
 774   2                 i--;
 775   2              }
 776   1          Watch();
 777   1      }
 778          void shift8(uchar ch)
 779          {
 780   1              uchar i=8;
 781   1              
 782   1              SCL=0;
 783   1              delay_nop(); 
 784   1              while(i--)
 785   1              {
 786   2                      SDA=(bit)(ch&0x80);
 787   2                      _nop_();_nop_();_nop_();
 788   2                      ch<<=1;
 789   2                      SCL=1;
 790   2                      _nop_();_nop_();_nop_();_nop_();_nop_();
 791   2                      SCL=0;
 792   2                      _nop_();_nop_();        
 793   2              }
 794   1      }
 795          /*void shift8(uchar a)
 796          {
 797              uchar i;
C51 COMPILER V7.09   7290                                                                  08/23/2004 17:15:04 PAGE 14  

 798                  AD = a;
 799                  Watch();
 800                  for (i=0; i<8; i++)
 801                  {
 802                       SDA = AD_7;  delay_nop(); 
 803                   SCL = True;  delay_nop(); 
 804                           SCL = False; delay_nop(); 
 805                           AD = AD * 2;
 806              }
 807          }*/
 808          void start()
 809          {
 810   1          
 811   1        SDA=1;   /*发送起始条件的数据信号*/
 812   1        _nop_();
 813   1        _nop_();
 814   1        _nop_();
 815   1        SCL=1;
 816   1        _nop_();    /*起始条件建立时间大于4.7us,延时*/
 817   1        _nop_();
 818   1        _nop_();
 819   1        _nop_();
 820   1        _nop_();    
 821   1        _nop_();
 822   1        SDA=0;   /*发送起始信号*/
 823   1        _nop_();    /* 起始条件锁定时间大于4μs*/
 824   1        _nop_();
 825   1        _nop_();
 826   1        _nop_();
 827   1        _nop_();
 828   1        _nop_();     
 829   1        SCL=0;   /*钳住I2C总线,准备发送或接收数据 */
 830   1        _nop_();
 831   1        _nop_();
 832   1        _nop_();
 833   1            //SDA = True;  delay_nop();          
 834   1            //SCL = True;  delay_nop();         
 835   1            //SDA = False; delay_nop(); 
 836   1                //SCL = False; delay_nop(); 
 837   1      }
 838          
 839          void ack(void)
 840          {
 841   1              SDA=1;
 842   1              SCL=0;
 843   1              _nop_();_nop_();          
 844   1              SCL=1;
 845   1              _nop_();_nop_();_nop_();_nop_();_nop_();    
 846   1              //while(SDA){;}   //This may make the CPU crash. 04-3-18 17:16
 847   1              SCL=0;
 848   1              _nop_();_nop_();    
 849   1      }
 850          
 851          
 852          /*-----------------------------------------------
 853          调用方式:void no_ack(void)
 854          函数说明:无需应答位,在读程序中用到
 855          -----------------------------------------------*/
 856          void no_ack(void)
 857          {
 858   1              SDA=1;
 859   1              delay_nop();          
C51 COMPILER V7.09   7290                                                                  08/23/2004 17:15:04 PAGE 15  

 860   1              SCL=1;
 861   1              delay_nop();          
 862   1              //while(SDA){;}  //This may make the CPU crash. 04-3-18 17:16
 863   1              SCL=0;
 864   1              delay_nop();          
 865   1      }
 866          void stop()
 867          {
 868   1        SDA=0;  /*发送结束条件的数据信号*/
 869   1        _nop_();   /*发送结束条件的时钟信号*/
 870   1        _nop_();
 871   1        SCL=1;  /*结束条件建立时间大于4μs*/
 872   1        _nop_();
 873   1        _nop_();
 874   1        _nop_();
 875   1        _nop_();
 876   1        _nop_();
 877   1        _nop_();
 878   1        SDA=1;  /*发送I2C总线结束信号*/
 879   1        _nop_();
 880   1        _nop_();
 881   1        _nop_();
 882   1        _nop_();
 883   1        _nop_();
 884   1            //SDA = False; delay_nop();   /*  停止  */
 885   1                //SCL = True;  delay_nop();
 886   1            //SDA = True;  delay_nop();
 887   1      }
 888          void  SendByte(uchar c)
 889          {
 890   1       uchar BitCnt;
 891   1       
 892   1       for(BitCnt=0;BitCnt<8;BitCnt++)  /*要传送的数据长度为8位*/
 893   1          {
 894   2           if((c<<BitCnt)&0x80) SDA=1;   /*判断发送位*/
 895   2             else  SDA=0;                
 896   2           _nop_();
 897   2               _nop_();
 898   2               _nop_();
 899   2           SCL=1;               /*置时钟线为高,通知被控器开始接收数据位*/
 900   2            _nop_(); 
 901   2            _nop_();               /*保证时钟高电平周期大于4μs*/
 902   2            _nop_();
 903   2            _nop_();
 904   2            _nop_();         
 905   2           SCL=0; 
 906   2          }
 907   1          
 908   1          _nop_();
 909   1          _nop_();
 910   1              _nop_();
 911   1          SDA=1;               /*8位发送完后释放数据线,准备接收应答位*/
 912   1          _nop_();
 913   1          _nop_();   
 914   1              _nop_();
 915   1          SCL=1;
 916   1          _nop_();
 917   1          _nop_();
 918   1          _nop_();
 919   1              if(SDA==1) YesNo_ack=0;     
 920   1             else YesNo_ack=1;        /*判断是否接收到应答信号*/
 921   1          SCL=0;
C51 COMPILER V7.09   7290                                                                  08/23/2004 17:15:04 PAGE 16  

 922   1          _nop_();
 923   1          _nop_();
 924   1              _nop_();
 925   1      }
 926          void delay_nop()
 927          {
 928   1          _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
 929   1              _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
 930   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2323    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     12      41
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2      10
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -