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

📄 ad_cy.lst

📁 一段源代码给大家看看
💻 LST
📖 第 1 页 / 共 2 页
字号:
 166          ******************************************************************************/ 
 167          
 168          void Write_Data(uint8 Fl,uint16 Flash_Address)  //向EEPROM中写数据
 169          {
 170   1               IAP_CONTR      =ENABLE_IAP  ;  //打开 IAP 功能, 设置 Flash 操作等待时间
 171   1               IAP_CMD        =IAP_BYTE_PROGRAM ;//设置为IAP/ISP/EEPROM 字节读模式命令
 172   1               IAP_ADDRH      =(uint8)(Flash_Address>>8);     //设置目标单元地址的高8 位地址
 173   1               IAP_ADDRL  =(uint8)Flash_Address;              //设置目标单元地址的低8 位地址
 174   1               IAP_DATA   =Fl;
 175   1               EA=0;
 176   1               IAP_TRIG       =0x5A ;                                         //先送5Ah,再送A5h 到ISP/IAP 触发寄存器,每次都需如此
 177   1               IAP_TRIG       =0xA5 ;                                         //送完A5h 后,ISP/IAP 命令立即被触发起动
 178   1               EA=1;
 179   1      ;
C51 COMPILER V7.06   AD_CY                                                                 02/20/2009 10:36:17 PAGE 4   

 180   1      }
 181          /****************************************************************************** 
 182          函数:Erase_Data()
 183          功能:EEPROM扇区擦除
 184          说明:设置相应的IAP参数,最后连续送5A和A5到IAP_TRIG中开启IAP.自动进行扇区擦除
 185          ******************************************************************************/ 
 186          
 187          void Erase_Data(uint16 Flash_Address)
 188          {
 189   1               IAP_CONTR      =ENABLE_IAP  ;                          //打开 IAP 功能, 设置 Flash 操作等待时间
 190   1               IAP_CMD        =IAP_SECTOR_ERASE ;                     //设置为IAP/ISP/EEPROM 字节读模式命令
 191   1               IAP_ADDRH      =(uint8)(Flash_Address>>8);     //设置目标单元地址的高8 位地址
 192   1               IAP_ADDRL  =(uint8)Flash_Address;              //设置目标单元地址的低8 位地址
 193   1               EA=0;
 194   1               IAP_TRIG       =0x5A ;                                         //先送5Ah,再送A5h 到ISP/IAP 触发寄存器,每次都需如此
 195   1               IAP_TRIG       =0xA5 ;                                         //送完A5h 后,ISP/IAP 命令立即被触发起动
 196   1               EA=1; 
 197   1              ;
 198   1      }
 199          /****************************************************************************** 
 200          函数:IAP_Disable()
 201          功能:关闭 IAP 功能
 202          说明:以下具体说时
 203          ******************************************************************************/ 
 204          
 205          void IAP_Disable(void)
 206          {
 207   1              //关闭 IAP 功能, 清相关的特殊功能寄存器,使CPU 处于安全状态,
 208   1              //一次连续的IAP 操作完成之后建议关闭IAP 功能,不需要每次都关
 209   1              IAP_CONTR       =0 ;    //关闭 IAP 功能
 210   1              IAP_CMD         =0 ;    //清命令寄存器,使命令寄存器无命令,此句可不用
 211   1              IAP_TRIG        =0 ;    //清命令触发寄存器,使命令触发寄存器无触发,此句可不用
 212   1              IAP_ADDRH       =0xFF ; //送地址高字节单元为FF,指向非EEPROM 区
 213   1              IAP_ADDRL       =0xFF ; //送地址低字节单元为FF,防止误操作
 214   1      
 215   1      }               
 216          /****************************************************************************** 
 217          函数:Serial_Port_Initial()
 218          功能:串口初始化
 219          说明:串口采用串口1,方式1来传送接收数据,使用独立波特率发生器作为波特率发生器
 220                采用4800bps传输速率。 
 221          ******************************************************************************/ 
 222          
 223          void Serial_Port_Initial(void)//串口初始化
 224          {
 225   1              SCON=0x50;      //采用串口方式1。
 226   1              BRT=RELOAD;     //装入重装数
 227   1      //AUXR 8Eh Auxiliary Register T0x12 T1x12 UART_M0x6 BRTR S2SMOD BRTx12 EXTRAM S1BRS
 228   1              AUXR|=0x11;  //00010001;开启BRTR即启动Serial,开启S1BRS即使用独立波特率发生器作
 229   1                      //为波特率发生器
 230   1              ES=1;       //允许串口中断
 231   1              EA=1;           //开启总中断
 232   1      
 233   1      }
 234          /****************************************************************************** 
 235          函数:Send_UART()
 236          功能:串口发送数据
 237          说明:串口采用串口1,方式1来传送接收数据,使用独立波特率发生器作为波特率发生器
 238                采用4800bps传输速率。 
 239          ******************************************************************************/ 
 240          
 241          void Send_UART(uint8 i)//发送数据
C51 COMPILER V7.06   AD_CY                                                                 02/20/2009 10:36:17 PAGE 5   

 242          {
 243   1              ES=0;
 244   1              TI=0;
 245   1              SBUF=i;
 246   1              while(TI==0);   
 247   1              TI=0;
 248   1              ES=1;
 249   1      }
 250          /****************************************************************************** 
 251          函数:UART_Interrupt_Receive()
 252          功能:串口接收数据
 253          说明:串口采用串口1,方式1来传送接收数据,使用独立波特率发生器作为波特率发生器
 254                采用4800bps传输速率。 
 255          ******************************************************************************/ 
 256          
 257          void UART_Interrupt_Receive(void) interrupt 4//中断接收
 258          {       
 259   1              uint8 k=0;
 260   1              if(RI==1)
 261   1              {
 262   2                      RI=0;
 263   2                      k=SBUF;
 264   2                      Send_UART(k+1);
 265   2              }
 266   1          else TI=0;    
 267   1      }
 268          
 269          /****************************************************************************** 
 270          函数:Timer0_Iint()
 271          功能:定时器0初始化,定时1MS 
 272          说明:请根据具体情况调整定时值 
 273          ******************************************************************************/ 
 274          
 275          void Timer0_Init(void)
 276          {
 277   1              TMOD |= 0x01;               /* TMOD: timer 0, mode 1, 16-bit   0001       */
 278   1          TH0 = (65536-24000)/256;   
 279   1          TL0 = (65536-24000)%256;    //1ms
 280   1          TR0 = 1;                    /* TR1:  timer 0 run                          */
 281   1          ET0=1;
 282   1              EA=1;
 283   1      }
 284           /********************************************************************
 285          //  Function    :   UTL_DelayTime
 286          //  Description :   Delay until time out
 287          //  Arguments   :   wCount  : the delay time
 288          //                  btBreak : FALSE, wait until time out
 289          //                          : TRUE, leave immediately
 290          //  Return      :   TRUE
 291          //  Side Effect :
 292          //  *********************************************************************/
 293           bit   UTL_DelayTime(uint16 wCount)
 294          {
 295   1          __wTemp= wCount;
 296   1          __dwTemp= __dwCountSystem;
 297   1          while ( ( __dwCountSystem- __dwTemp ) < __wTemp )
 298   1          {
 299   2          }
 300   1         return  1;
 301   1      }
 302          
 303          /*  *********************************************************************
C51 COMPILER V7.06   AD_CY                                                                 02/20/2009 10:36:17 PAGE 6   

 304          //  Function    :   ISR_Timer0; ET1(SFR, bit 3 of IE)
 305          //                      :   Timer1, mode 1, 16 bits counter
 306          //  Description :   1. receive the internal timer counting(When up counter overflow)
 307          //                      :   2. must re-load the TH1, TL1 value
 308          //                  3. The Timer will scan Key, monitor system and Error-Concealment
 309          //  Arguments   :
 310          //  Return      :   none
 311          //  Side Effect :
 312          //  *********************************************************************/
 313          void  ISR_Timer0(void) interrupt 1 using 1        
 314          {
 315   1          //BYTE    bKey;
 316   1          __dwCountSystem++;  
 317   1          TH0 = (65536-24000)/256;    // reload counter
 318   1          TL0 = (65536-24000)%256;   //1ms
 319   1          return;
 320   1      }
 321          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    641    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      8       1
   IDATA SIZE       =     21    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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