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

📄 lesson7.lst

📁 8051模拟I2C
💻 LST
📖 第 1 页 / 共 2 页
字号:
 135   3                              case 10:/*A*/
 136   3                                              if(g_uc_disp_cnt == 6)
 137   3                                              {
 138   4                                                      uc_device_addr = 0xA0;//0xA0=1010 0000B, 1010is the device number,000 is the A2A1A0 hard wired, 0 wr
             -ite.
 139   4                                                      uc_device_sub_addr = 0x00;//EEPROM 首地址
 140   4                                                      uc_data_send[0] = g_uc_hr_cnt;//存储的数据保存在数组uc_data_send中
 141   4                                                      uc_data_send[1] = g_uc_min_cnt;
 142   4                                                      uc_data_send[2] = g_uc_sec_cnt;
 143   4                                                      
 144   4                                                      ISendStr(uc_device_addr,uc_device_sub_addr,uc_data_send,3);//以页方式存储
 145   4                                                      
 146   4                                                      g_uc_hr_cnt = 0xFF;//清屏
 147   4                                                      g_uc_min_cnt = 0xFF;
 148   4                                                      g_uc_sec_cnt = 0xFF;
 149   4                                                      display_led();
 150   4                                              }
 151   3                                      break;
 152   3                              case 11:/*B*/
 153   3                                              g_uc_key_B_cnt++;//需要对uc_key_B_cnt赋初始值,否则uc_key_B_cnt得到随机数
 154   3                                              switch(g_uc_key_B_cnt)
 155   3                                              {
 156   4                                                      case 1:
 157   4                                                              uc_device_addr = 0xA0;//0xA0=1010 0000B, 1010is the device number,000 is the A2A1A0 hard wired, 0 w
             -rite.
 158   4                                                              uc_device_sub_addr = 0x00;//EEPROM 首地址
 159   4                                                              IRcvStr(uc_device_addr,uc_device_sub_addr,uc_data_send,3);//以页方式读取
 160   4                                                              g_uc_hr_cnt = uc_data_send[0];//读出的数据保存在数组uc_data_send中
 161   4                                                              g_uc_min_cnt = uc_data_send[1];
 162   4                                                              g_uc_sec_cnt = uc_data_send[2];
 163   4      
 164   4                                                              g_hr_disp = g_uc_hr_cnt | 0x0F;//显示hr high
 165   4                                                              break;
 166   4                                                      case 2:
 167   4                                                              g_hr_disp = g_uc_hr_cnt;//显示hr high和hr low
 168   4                                                              break;
 169   4                                                      case 3:
 170   4                                                              g_min_disp = g_uc_min_cnt | 0x0F;//显示min high                                                 
 171   4                                                              break;
 172   4                                                      case 4: 
 173   4                                                              g_min_disp = g_uc_min_cnt;//显示min high和min low
 174   4                                                              break;
 175   4                                                      case 5: 
 176   4                                                              g_sec_disp = g_uc_sec_cnt | 0x0F;//显示sec high
C51 COMPILER V7.50   LESSON7                                                               06/18/2006 10:39:04 PAGE 4   

 177   4                                                              break;
 178   4                                                      case 6:
 179   4                                                              g_sec_disp = g_uc_sec_cnt;//显示hr high和hr low
 180   4      
 181   4                                                              g_uc_key_B_cnt = 0;
 182   4                                                              g_uc_disp_cnt = 0;//允许接收按键0~9
 183   4                                                              break;
 184   4                                                      default:
 185   4                                                              break;
 186   4                                              }
 187   3                                      break;
 188   3      
 189   3                              default:/*k = 0~9*/
 190   3                                      if(g_uc_disp_cnt < 7)//the maximal number is 6
 191   3                                      {
 192   4                                              g_uc_disp_cnt++;
 193   4                                              switch(g_uc_disp_cnt)
 194   4                                              {
 195   5                                                      case 1:/*hr high*/
 196   5                                                                      g_uc_hr_cnt = k << 4;
 197   5                                                                      g_hr_disp = g_uc_hr_cnt;/*using OR can't mask the hr_low,so hr equal to 0*/                                             
 198   5                                                              break;
 199   5                                                      case 2:/*hr low*/
 200   5                                                                      g_uc_hr_cnt += k;
 201   5                                                                      g_hr_disp = g_uc_hr_cnt;
 202   5                                                              break;
 203   5                                                      case 3:/*min high*/
 204   5                                                                      g_uc_min_cnt = k << 4;
 205   5                                                                      g_min_disp = g_uc_min_cnt;
 206   5                                                              break;
 207   5                                                      case 4:/*min low*/
 208   5                                                                      g_uc_min_cnt += k;
 209   5                                                                      g_min_disp = g_uc_min_cnt;
 210   5                                                              break;
 211   5                                                      case 5:/*sec high*/
 212   5                                                                      g_uc_sec_cnt = k << 4;
 213   5                                                                      g_sec_disp = g_uc_sec_cnt;
 214   5                                                              break;
 215   5                                                      case 6:/*sec low*/
 216   5                                                                      g_uc_sec_cnt += k;
 217   5                                                                      g_sec_disp = g_uc_sec_cnt;
 218   5      
 219   5                                                                      //g_uc_disp_cnt = 7;/*avoid setting incorrectly*/
 220   5                                                              break;
 221   5                                                      default:                
 222   5                                                              break;
 223   5                                              }
 224   4                                      }
 225   3                                      break;
 226   3                      }
 227   2              }
 228   1              else/*not release the key; continue wait*/
 229   1              {
 230   2                      delay(2,255);
 231   2                      goto lab;
 232   2              }
 233   1      }
 234          /*************************************************/
 235          /*
 236          name:display_led
 237          function:display the number
 238          */
C51 COMPILER V7.50   LESSON7                                                               06/18/2006 10:39:04 PAGE 5   

 239          /*************************************************/
 240          void display_led(void)
 241          {
 242   1              g_sec_disp = g_uc_sec_cnt;//显示sec
 243   1              g_min_disp = g_uc_min_cnt;//显示min
 244   1              g_hr_disp = g_uc_hr_cnt;//显示hr
 245   1      }
 246          /*************************************************/
 247          /*
 248          name:delay
 249          function: 
 250          */
 251          /*************************************************/
 252          void delay(uchar m, uchar n)
 253          {
 254   1              data uchar i, j;
 255   1              for(i=0;i<m;i++)
 256   1              {
 257   2                      for(j=0;j<n;j++);
 258   2              }
 259   1      }
 260          
 261          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    432    ----
   CONSTANT SIZE    =     12    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      6       7
   IDATA SIZE       =   ----    ----
   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 + -