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

📄 cam.lst

📁 基于单片机的串口摄像头模块的读写C语言源程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 275   1          RCAP2H=OldTH2;   
 276   1          RCAP2L=OldTL2; //16位自动再装入值
 277   1              TR2=1 ; //定时器2开始
 278   1              //*****************
 279   1              return 1;       
 280   1      }
 281          
 282          bit Get_Picture()
 283          {
 284   1              uchar idata temp_cmd[6];
 285   1              uchar temp1,temp2,tempdat;
 286   1              uchar i;
 287   1              bank=0;
 288   1              error=0;
 289   1              countr=0;
 290   1              lcd_x=0;
 291   1              lcd_y=0;
 292   1              wr_lcd (0,0x34);//8-BIT 控制接口的扩充指令集动作 
 293   1              wr_lcd(0,0x80); //设定GDRAM 地址到地址计数器
 294   1              wr_lcd(0,0x81); 
 295   1              Send_Cmd(GETPICTURE_ID);
 296   1              Wait_ACK(temp_cmd);
 297   1              if(temp_cmd[2]==GETPICTURE_ID[1])
 298   1              {
 299   2                      Wait_ACK(temp_cmd);
 300   2                      ES=1;
 301   2                      while(countr<1200&&(lcd_x<Width&&lcd_y<Height))
 302   2                      {
C51 COMPILER V8.16   CAM                                                                   05/23/2009 21:20:21 PAGE 6   

 303   3                              if(front!=rear)
 304   3                              {
 305   4                                      temp1=Picture_Dat1[front];
 306   4                                      temp2=Picture_Dat2[front];
 307   4                                      front++;
 308   4                                      tempdat=0;
 309   4                                      for(i=0;i<4;i++)
 310   4                                      {
 311   5                                              tempdat<<=1;
 312   5                                              if(temp1&0x80)
 313   5                                                      tempdat|=0x01;
 314   5                                              temp1<<=2;              
 315   5                                      }
 316   4                                      for(i=0;i<4;i++)
 317   4                                      {
 318   5                                              tempdat<<=1;
 319   5                                              if(temp2&0x80)
 320   5                                                      tempdat|=0x01;
 321   5                                              temp2<<=2;              
 322   5                                      }
 323   4                                      wr_lcd(1,tempdat);
 324   4                                      lcd_x++;
 325   4                                      if(lcd_x==Width)//换行
 326   4                                      {
 327   5                                              lcd_y++;
 328   5                                              wr_lcd (0,0x34);//8-BIT 控制接口的扩充指令集动作 
 329   5                                              wr_lcd(0,0x80+lcd_y);   //设定GDRAM 地址到地址计数器
 330   5                                              wr_lcd(0,0x81);
 331   5                                              lcd_x=0;
 332   5                                      }       
 333   4                              }
 334   3                              else
 335   3                              {
 336   4                                      if(error)
 337   4                                      {
 338   5                                              CAM_Cmd(RESET1_ID);
 339   5                                              wr_lcd (0,0x36);
 340   5                                              return 0;
 341   5                                      }
 342   4                              }       
 343   3                      }
 344   2                      ES=0;
 345   2                      if(countr<1200)
 346   2                              CAM_Cmd(RESET1_ID);
 347   2                      Send_Cmd(ACK2_ID);
 348   2                      wr_lcd (0,0x36);
 349   2                      delay_ms(50);
 350   2                      return 1;               
 351   2              }
 352   1              return 0;
 353   1      }
 354          
 355          void main()
 356          {
 357   1              init_lcd();
 358   1              init_UART();
 359   1              wr_lcd (0,0x30); 
 360   1              wr_lcd (0,0x80);
 361   1              wr_lcd (1,'S');
 362   1              wr_lcd (1,'Y');
 363   1              wr_lcd (1,'N');
 364   1              wr_lcd (1,'C');
C51 COMPILER V8.16   CAM                                                                   05/23/2009 21:20:21 PAGE 7   

 365   1              wr_lcd (1,' ');
 366   1              if(Send_SYNC_Cmd())
 367   1              {
 368   2                      wr_lcd (1,'O');
 369   2                      wr_lcd (1,'K');
 370   2              }
 371   1              else
 372   1              {
 373   2                      wr_lcd (1,'E');
 374   2                      wr_lcd (1,'R');
 375   2                      goto ERROR;
 376   2              }
 377   1              wr_lcd (0,0x30); 
 378   1              wr_lcd (0,0x80);
 379   1              wr_lcd (1,'I');
 380   1              wr_lcd (1,'N');
 381   1              wr_lcd (1,'I');
 382   1              wr_lcd (1,'T');
 383   1              wr_lcd (1,' ');
 384   1              if(CAM_Cmd(INITAL_ID))
 385   1              {
 386   2                      wr_lcd (1,'O');
 387   2                      wr_lcd (1,'K');
 388   2              }
 389   1              else
 390   1              {
 391   2                      wr_lcd (1,'E');
 392   2                      wr_lcd (1,'R');
 393   2                      goto ERROR;
 394   2              }
 395   1              while(1)
 396   1              {
 397   2                      if(!key)
 398   2                      {
 399   3                              delay_ms(10);
 400   3                              if(!key)
 401   3                              {
 402   4                                      wr_lcd (0,0x30); 
 403   4                                      wr_lcd (0,0x85);
 404   4                                      wr_lcd (1,'S');
 405   4                                      wr_lcd (1,'N');
 406   4                                      wr_lcd (1,'A');
 407   4                                      wr_lcd (1,'P');
 408   4                                      wr_lcd (1,' ');
 409   4                                      wr_lcd (0,0x30); 
 410   4                                      wr_lcd (0,0x96);
 411   4                                      if(CAM_Cmd(SNAPSHOT_ID))
 412   4                                      {
 413   5                                              wr_lcd (1,'O');
 414   5                                              wr_lcd (1,'K');
 415   5                                      }
 416   4                                      else
 417   4                                      {
 418   5                                              wr_lcd (1,'E');
 419   5                                              wr_lcd (1,'R');
 420   5                                              goto ERROR;
 421   5                                      }
 422   4                                      Get_Picture();
 423   4                                      while(!key)
 424   4                                              ;
 425   4                              }
 426   3                      }
C51 COMPILER V8.16   CAM                                                                   05/23/2009 21:20:21 PAGE 8   

 427   2              }
 428   1      ERROR:;
 429   1              CAM_Cmd(RESET2_ID);
 430   1              while(1)
 431   1                      ;
 432   1      }
C51 COMPILER V8.16   CAM                                                                   05/23/2009 21:20:21 PAGE 9   

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION _delay (BEGIN)
                                           ; SOURCE LINE # 36
;---- Variable 'mm' assigned to Register 'R7' ----
                                           ; SOURCE LINE # 37
                                           ; SOURCE LINE # 39
0000 E4                CLR     A
0001 7800        R     MOV     R0,#LOW i
0003 F6                MOV     @R0,A
0004         ?C0001:
0004 7800        R     MOV     R0,#LOW i
0006 E6                MOV     A,@R0
0007 C3                CLR     C
0008 9F                SUBB    A,R7
0009 5003              JNC     ?C0004
000B 06                INC     @R0
000C 80F6              SJMP    ?C0001
                                           ; SOURCE LINE # 41
000E         ?C0004:
000E 22                RET     
             ; FUNCTION _delay (END)

             ; FUNCTION delay_1ms (BEGIN)
                                           ; SOURCE LINE # 43
                                           ; SOURCE LINE # 44
                                           ; SOURCE LINE # 46
0000 E4                CLR     A
0001 7800        R     MOV     R0,#LOW i
0003 F6                MOV     @R0,A
0004         ?C0005:
0004 7800        R     MOV     R0,#LOW i
0006 06                INC     @R0
0007 E6                MOV     A,@R0
0008 B4FFF9            CJNE    A,#0FFH,?C0005
000B         ?C0006:
                                           ; SOURCE LINE # 48
000B E4                CLR     A
000C 7800        R     MOV     R0,#LOW i
000E F6                MOV     @R0,A
000F         ?C0008:
000F 7800        R     MOV     R0,#LOW i
0011 06                INC     @R0
0012 E6                MOV     A,@R0
0013 B42AF9            CJNE    A,#02AH,?C0008
                                           ; SOURCE LINE # 50
0016         ?C0011:
0016 22                RET     
             ; FUNCTION delay_1ms (END)

             ; FUNCTION _delay_ms (BEGIN)
                                           ; SOURCE LINE # 52
;---- Variable 't' assigned to Register 'R7' ----
                                           ; SOURCE LINE # 53
                                           ; SOURCE LINE # 55
0000 E4                CLR     A
0001 7800        R     MOV     R0,#LOW i
0003 F6                MOV     @R0,A
0004         ?C0012:
0004 7800        R     MOV     R0,#LOW i
0006 E6                MOV     A,@R0
C51 COMPILER V8.16   CAM                                                                   05/23/2009 21:20:21 PAGE 10  

0007 C3                CLR     C
0008 9F                SUBB    A,R7
0009 5008              JNC     ?C0015
                                           ; SOURCE LINE # 56
000B 120000      R     LCALL   delay_1ms
000E 7800        R     MOV     R0,#LOW i
0010 06                INC     @R0
0011 80F1              SJMP    ?C0012
                                           ; SOURCE LINE # 57
0013         ?C0015:
0013 22                RET     
             ; FUNCTION _delay_ms (END)

             ; FUNCTION L?0107 (BEGIN)
0000         L?0108:
0000 7D30              MOV     R5,#030H
0002 E4                CLR     A
0003 FF                MOV     R7,A
             ; FUNCTION _wr_lcd (BEGIN)
                                           ; SOURCE LINE # 59
;---- Variable 'content' assigned to Register 'R5' ----
;---- Variable 'dat_comm' assigned to Register 'R6' ----
0004 AE07              MOV     R6,AR7
                                           ; SOURCE LINE # 60
                                           ; SOURCE LINE # 62
0006 7F32              MOV     R7,#032H
0008 120000      R     LCALL   _delay
                                           ; SOURCE LINE # 63
000B 7800        R     MOV     R0,#LOW a
000D A605              MOV     @R0,AR5
                                           ; SOURCE LINE # 64
000F D2B3              SETB    cs
                                           ; SOURCE LINE # 65
0011 C2B7              CLR     sclk
                                           ; SOURCE LINE # 66
0013 D2B5              SETB    std
                                           ; SOURCE LINE # 67
0015 E4                CLR     A
0016 08                INC     R0
0017 F6                MOV     @R0,A
0018         ?C0016:
                                           ; SOURCE LINE # 68
                                           ; SOURCE LINE # 69
0018 D2B7              SETB    sclk
                                           ; SOURCE LINE # 70
001A C2B7              CLR     sclk
                                           ; SOURCE LINE # 71
001C 7800        R     MOV     R0,#LOW i
001E 06                INC     @R0
001F E6                MOV     A,@R0
0020 B405F5            CJNE    A,#05H,?C0016
0023         ?C0017:
                                           ; SOURCE LINE # 72
0023 C2B5              CLR     std
                                           ; SOURCE LINE # 73
0025 D2B7              SETB    sclk
                                           ; SOURCE LINE # 74
0027 C2B7              CLR     sclk
                                           ; SOURCE LINE # 75
0029 EE                MOV     A,R6
002A 6004              JZ      ?C0019
                                           ; SOURCE LINE # 76

⌨️ 快捷键说明

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