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

📄 baozhan_one.lst

📁 用单片机做的公交车报站器
💻 LST
📖 第 1 页 / 共 2 页
字号:
 167   5                                              dis_low=0;
C51 COMPILER V7.06   BAOZHAN_ONE                                                           05/23/2007 15:14:55 PAGE 4   

 168   5                                      }
 169   4                                      else
 170   4                                      {
 171   5                                              dis_low=1;
 172   5                                              disdata=disply[14];
 173   5                                              dis_low=0;
 174   5                                      }
 175   4                              }
 176   3                              break;
 177   3                              
 178   3                              case 1:
 179   3                              {
 180   4                                      if(cur_dpy>=20&&cur_dpy<30)
 181   4                                      {
 182   5                                              dis_high=1;
 183   5                                              disdata=disply[1];
 184   5                                              dis_high=0;
 185   5                                      }
 186   4                                      else if(cur_dpy>=30&&cur_dpy<40)
 187   4                                      {
 188   5                                              dis_high=1;
 189   5                                              disdata=disply[2];
 190   5                                              dis_high=0;
 191   5                                      }
 192   4                                      else
 193   4                                      {
 194   5                                              dis_high=1;
 195   5                                              disdata=disply[14];
 196   5                                              dis_high=0;
 197   5                                      }
 198   4                              }
 199   3                              break;
 200   3                              
 201   3                              default:break;
 202   3                      }
 203   2                      bitselect=~bitselect;
 204   2              }
 205   1              
 206   1                      
 207   1      }
 208          
 209          
 210          
 211          
 212          
 213          void dis_ale()        //禁止ale,允许内部扩展1024byteRAM
 214          {
 215   1              AUXR = 0x01;
 216   1      }
 217          
 218          void enable_in_ram()         //允许内部1024RAM,允许ALE.默认是允许的
 219          {
 220   1              AUXR = 0x00;
 221   1      }
 222          
 223          
 224          
 225          
 226          
 227          
 228          
 229          
C51 COMPILER V7.06   BAOZHAN_ONE                                                           05/23/2007 15:14:55 PAGE 5   

 230          
 231          //键盘扫描
 232          void delay_kb(unsigned char time)
 233          {
 234   1              unsigned char i,j;
 235   1              for(i=0;i<time;i++)
 236   1                  for(j=0;j<200;j++);
 237   1      }
 238          
 239          unsigned char kbscan(void)
 240          {
 241   1              unsigned char i,j,temp;
 242   1              unsigned char vertical=0x01;
 243   1              unsigned char row=0x10;
 244   1              do{
 245   2                 P2=0xf0;
 246   2                }while(P2&0xf0==0xf0);
 247   1              delay_kb(10);
 248   1              P2=0xf0;
 249   1              if(P2&0xf0!=0xf0)
 250   1              {
 251   2                      for(i=0;i<4;i++)
 252   2                      {
 253   3                              P2=~vertical;
 254   3                              temp=P2&0xf0;
 255   3                              for(j=0;j<4;j++)
 256   3                              {
 257   4                                      if(temp&row==0x00)
 258   4                                          return(j*8+i);
 259   4                                      temp=temp>>1;
 260   4                              }
 261   3                      }
 262   2                      vertical<<=1;
 263   2                      
 264   2      
 265   2              }
 266   1              else return 20;
 267   1      }
 268                                          
 269                                  
 270                                  
 271                                  
 272                                  
 273                                  
 274                                  
 275                                  
 276          
 277          //ISD4004录放音
 278          
 279          void isd_spi(unsigned char cmd)   //ISD4004写控制字
 280          {
 281   1              unsigned char m,i,j;
 282   1              ss=1;
 283   1              sclk=0;
 284   1              ss=0;
 285   1      
 286   1              m=cmd;
 287   1              for(i=0;i<8;i++)
 288   1              {
 289   2                      m=_cror_(m,1);     //unsigned char _cror_(unsigned char x,unsigned char y);
 290   2                                 //将X值向右旋Y次,即X值的bit0右旋至bit7.返回X值右旋Y次后的数值
 291   2                      j=m<<1;
C51 COMPILER V7.06   BAOZHAN_ONE                                                           05/23/2007 15:14:55 PAGE 6   

 292   2                      mosi=CY;
 293   2                      sclk=0;
 294   2                      sclk=1;
 295   2              }
 296   1              ss=1;
 297   1      }
 298          
 299          
 300          
 301          
 302          
 303          
 304          unsigned char chk_ovf(void)    //检测OVF,溢出返回1,否则返回0
 305          {
 306   1              isd_spi(rint);      
 307   1              ss=0;
 308   1              sclk=0;
 309   1              sclk=1;
 310   1              if(miso==1)
 311   1              {
 312   2                      return 1;
 313   2              }
 314   1              else
 315   1              {
 316   2                      return 0;
 317   2              }
 318   1       }
 319          
 320          
 321          
 322          
 323          
 324          
 325          
 326          
 327          
 328          void isd_rec(void)  //录音  address--录音地址 0---2400
 329          {
 330   1                      unsigned char i,m,j;
 331   1              unsigned int datasoute=0,address=0;
 332   1              static unsigned char addr=0;            //初始化isd_addr[]下标
 333   1                      static unsigned int PR_addr=0;        //初始化行数(指示录放地址)
 334   1                      
 335   1              
 336   1              isd_spi(powerup);
 337   1              delay_isd(5118);        //上电延时
 338   1              isd_spi(powerup);
 339   1              delay_isd(5118);        //上电延时
 340   1              delay_isd(5118);        //上电延时
 341   1              if(init_R_addr==1)        //需要初始化录音地址
 342   1              {
 343   2                      ss=1;
 344   2                      sclk=0;
 345   2                      m=setrec;
 346   2                      ss=0;
 347   2                      for(i=0;i<16;i++)
 348   2                      {
 349   3                              address=_iror_(address,1);     //unsigned int _iror_(unsigned int x,unsigned char y);
 350   3                                                //将整数类型的X值右旋Y次,即X值的bit0右旋至bit15.返回X值右旋Y次

⌨️ 快捷键说明

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