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

📄 image_3rd_computer_1012.s43

📁 采用msp430中汇编语言编写的
💻 S43
📖 第 1 页 / 共 5 页
字号:
        clr.b   &P5DIR            ;数据从FIFO到430
	bis.b   #RCLK,&P4OUT      ;首先将RCLK拉高
	bic.b   #REN,&P4OUT       ;允许FIFO输出
	
        bic.b   #EN_5V_com,&P3OUT       ;打开通信5V,供给RS232板
        mov      #0,R5
      
TJ0     bic.b    #RCLK,&P4OUT
TJ1     bit.b    #UTXIFG0,&IFG1    ;USART0 TX buffer 准备好了吗?
        jz       TJ1               ;如果没有准备好则跳转
        mov.b    &P2IN,&TXBUF0    ;将数据发送到缓冲区
        bis.b    #RCLK,&P4OUT
        inc      R5               ;缓冲区地址加1
        cmp      #3,R5
        jlo      TJ0
        bit.b    #EF_FIFO,&P4IN     ;读完了吗?
        jnz      TJ0
        ;再读一个数据
        bic.b    #RCLK,&P4OUT
TJ1_2     bit.b    #UTXIFG0,&IFG1    ;USART0 TX buffer 准备好了吗?
        jz       TJ1_2               ;如果没有准备好则跳转
        mov.b    &P2IN,&TXBUF0    ;将数据发送到缓冲区
        bis.b    #RCLK,&P4OUT
        inc      R5               ;缓冲区地址加1
        
        
 ;       bis.b   #EN_5V_com,&P3OUT       ;关闭通信5V

        pop     R5
        pop     R13
        pop     R14
        pop     R15
        RET
;-----------------------------------------------------------------------------

;-----------------------------------------------------------------------------
READOUT_36060
;-----------------------------------------------------------------------------
    ;test 下面试着将所有寄存器中的数据读到0x400h至0x6FFh中
        push    R15
        push    R13
        mov     #REG_36060,R15                        
        clr.b   R13
        ;写高位地址
RO3_1
        mov.b   #0FFh,&P5DIR         ;P5口先全置为输出
        bic.b   #03h,&P5OUT         ;准备输出高位地址为00
        CALL    #WR_1byte_36060_HI     ;将高位地址写入36060

        mov.b   R13,&P5OUT          	;注释标记段长度
          CALL    #WR_1byte_36060_LO     
          CALL    #RD_1byte_36060
        cmp.b   #0FFh,R13
        jeq     RO3_2  
        inc.b   R13
        inc     R15
        jmp     RO3_1
RO3_2
        pop     R13
        pop     R15
        RET

;-----------------------------------------------------------------------------

;-----------------------------------------------------------------------------
CONFIG_ZR36060
;-----------------------------------------------------------------------------
        push    R15                ;存430里的存储地址
        push    R14                ;存寄存器地址
        push    R13                 
        push    R7
        
        mov     #REG_36060,R15
        bis.b   #Sleep_36060,&P1DIR
        bis.b   #START_36060,&P6DIR
        
        bic.b   #EN_Image,&P1OUT       ;打开ZR36060的3.3V
        bis.b   #ADDR0+ADDR1,&P6DIR  
        bis.b   #Reset_36060,&P1DIR  
        bis.b   #RD+WR,&P6DIR             ;Reset/WR/RD/ADDR0/ADDR1均置为输出
        bic.b   #ACK,&P1DIR               ;ACK置为输入
        bis.b   #RD+WR,&P6OUT             ;WR/RD缺省为1
       
       ;应该在此处进行复位
        bis.b   #Reset_36060,&P1OUT
             mov     #10,&WAIT_TIME
             CALL    #DELAY_LOOP
             mov     #10,&WAIT_TIME
             CALL    #DELAY_LOOP
             mov     #10,&WAIT_TIME
             CALL    #DELAY_LOOP
             mov     #10,&WAIT_TIME
             CALL    #DELAY_LOOP
        bic.b   #Reset_36060,&P1OUT
             mov     #10,&WAIT_TIME
             CALL    #DELAY_LOOP
             mov     #10,&WAIT_TIME
             CALL    #DELAY_LOOP
             mov     #10,&WAIT_TIME
             CALL    #DELAY_LOOP
        bis.b   #Reset_36060,&P1OUT
             mov     #10,&WAIT_TIME
             CALL    #DELAY_LOOP
             mov     #10,&WAIT_TIME
             CALL    #DELAY_LOOP
             mov     #10,&WAIT_TIME
             CALL    #DELAY_LOOP
        ;注意由于ZR36060需要在睡眠状态稳定内部锁相环,所以上电后至少需要进入睡眠状态一次        
        bic.b   #Sleep_36060,&P1OUT
             mov     #10,&WAIT_TIME
             CALL    #DELAY_LOOP
             mov     #10,&WAIT_TIME
             CALL    #DELAY_LOOP
             mov     #10,&WAIT_TIME
             CALL    #DELAY_LOOP
        bis.b   #Sleep_36060,&P1OUT        
         
;        CALL    #READOUT_36060
        ;;;;!!!!!!!!!!!!
        ;先写入寄存器地址
        ;写高位地址
        mov.b   #0FFh,&P5DIR         ;P2口先全置为输出
        bic.b   #03h,&P5OUT         ;准备输出高位地址为00
        CALL    #WR_1byte_36060_HI     ;将高位地址写入36060
        
        ;写寄存器低位地址
        mov.b   #00h,&P5OUT          ;给寄存器000写入0
          CALL    #WR_1byte_36060_LO     ;将低位地址写入36060
            mov.b   #00h,&P5OUT          ;主要是将SyncRst不复位
              CALL    #WR_1byte_36060_DATA
          ;寄存器0x002写入0
          ;选择code slave mode,8bit code bus
        mov.b   #02h,&P5OUT          ;寄存器0x002写入0
          CALL    #WR_1byte_36060_LO     ;将低位地址写入36060
            mov.b   #01h,&P5OUT          ;控制码字主模式,8位
              CALL    #WR_1byte_36060_DATA
          ;寄存器0x003写入11000100,相当于Auto Two-Pass Compression
        mov.b   #03h,&P5OUT          ;寄存器0x003写入11000100
          CALL    #WR_1byte_36060_LO     ;将低位地址写入36060
;            mov.b   #0C4h,&P5OUT          ;Auto Two-Pass Compression
                    mov     #MEM_36060+3,R7
                    mov.b   0(R7),&P5OUT         ;控制文件大小
              CALL    #WR_1byte_36060_DATA
        mov.b   #04h,&P5OUT          ;寄存器0x003写入11000100
          CALL    #WR_1byte_36060_LO     ;将低位地址写入36060
            mov.b   #00h,&P5OUT          ;must be 00h
              CALL    #WR_1byte_36060_DATA
   ;;;;;;;;0x005h还应该再看看     
        mov.b   #05h,&P5OUT          ;寄存器0x007写入0
          CALL    #WR_1byte_36060_LO     
;            mov.b   #020h,&P5OUT         ;控制文件大小
                    mov     #MEM_36060+5,R7
                    mov.b   0(R7),&P5OUT         ;控制文件大小
              CALL    #WR_1byte_36060_DATA
        ;寄存器0x006写入00111000,将DRI、DQT、DHT都包含在标志段中,APP、COM段不包括
        mov.b   #06h,&P5OUT          ;寄存器0x006写入00111000
          CALL    #WR_1byte_36060_LO     
;            mov.b   #038h,&P5OUT         ;包含DHT、DQT、DRI表
                    mov     #MEM_36060+6,R7
                    mov.b   0(R7),&P5OUT         ;控制文件大小
              CALL    #WR_1byte_36060_DATA
   ;;;;;;;;0x007h还应该再看看     
        mov.b   #07h,&P5OUT          ;寄存器0x007写入0
          CALL    #WR_1byte_36060_LO     
            mov.b   #00h,&P5OUT          ;禁止所有中断
              CALL    #WR_1byte_36060_DATA
   ;;;;;;;;0x008h还应该再看看     
   ;;;;;;;;0x009h~0x00Ch还应该再看看     
        mov.b   #09h,&P5OUT          ;寄存器0x007写入0
          CALL    #WR_1byte_36060_LO     
;            mov.b   #0FFh,&P5OUT          
                    mov     #MEM_36060+9,R7
                    mov.b   0(R7),&P5OUT         ;控制文件大小
              CALL    #WR_1byte_36060_DATA
        mov.b   #0Ah,&P5OUT          ;寄存器0x007写入0
          CALL    #WR_1byte_36060_LO     
;            mov.b   #00h,&P5OUT          
                    mov     #MEM_36060+10,R7
                    mov.b   0(R7),&P5OUT         ;控制文件大小
              CALL    #WR_1byte_36060_DATA
        mov.b   #0Bh,&P5OUT          ;寄存器0x007写入0
          CALL    #WR_1byte_36060_LO     
;            mov.b   #0F7h,&P5OUT          
                    mov     #MEM_36060+11,R7
                    mov.b   0(R7),&P5OUT         ;控制文件大小
              CALL    #WR_1byte_36060_DATA
        mov.b   #0Ch,&P5OUT          ;寄存器0x007写入0
          CALL    #WR_1byte_36060_LO     
;            mov.b   #00h,&P5OUT          
                    mov     #MEM_36060+12,R7
                    mov.b   0(R7),&P5OUT         ;控制文件大小
              CALL    #WR_1byte_36060_DATA
   ;;;;;;;;0x00Dh~0x010h还应该再看看    
        mov.b   #0Dh,&P5OUT          ;寄存器0x007写入0
          CALL    #WR_1byte_36060_LO     
;            mov.b   #00h,&P5OUT          
                    mov     #MEM_36060+13,R7
                    mov.b   0(R7),&P5OUT         ;控制文件大小
              CALL    #WR_1byte_36060_DATA
        mov.b   #0Eh,&P5OUT          ;寄存器0x007写入0
          CALL    #WR_1byte_36060_LO     
;            mov.b   #08h,&P5OUT          
                    mov     #MEM_36060+14,R7
                    mov.b   0(R7),&P5OUT         ;控制文件大小
              CALL    #WR_1byte_36060_DATA
        mov.b   #0Fh,&P5OUT          ;寄存器0x007写入0
          CALL    #WR_1byte_36060_LO     
;            mov.b   #0FFh,&P5OUT          
                    mov     #MEM_36060+15,R7
                    mov.b   0(R7),&P5OUT         ;控制文件大小
              CALL    #WR_1byte_36060_DATA
        mov.b   #010h,&P5OUT          ;寄存器0x007写入0
          CALL    #WR_1byte_36060_LO     
;            mov.b   #00h,&P5OUT          
                    mov     #MEM_36060+16,R7
                    mov.b   0(R7),&P5OUT         ;控制文件大小
              CALL    #WR_1byte_36060_DATA
   ;;;;;;;;0x011h~0x012h还应该再看看        
        mov.b   #011h,&P5OUT          ;寄存器0x007写入0
          CALL    #WR_1byte_36060_LO     
;            mov.b   #00h,&P5OUT          
                    mov     #MEM_36060+17,R7
                    mov.b   0(R7),&P5OUT         ;控制文件大小
              CALL    #WR_1byte_36060_DATA
        mov.b   #012h,&P5OUT          ;寄存器0x007写入0
          CALL    #WR_1byte_36060_LO     
;            mov.b   #001h,&P5OUT          
                    mov     #MEM_36060+18,R7
                    mov.b   0(R7),&P5OUT         ;控制文件大小
              CALL    #WR_1byte_36060_DATA
        ;寄存器0x013h~0x015h写入0xFFFFFF,初始化的要求
        mov.b   #013h,&P5OUT          ;给寄存器0x13h写入FF
          CALL    #WR_1byte_36060_LO     
            mov.b   #0FFh,&P5OUT          
              CALL    #WR_1byte_36060_DATA
        mov.b   #014h,&P5OUT          ;给寄存器0x14h写入FF
          CALL    #WR_1byte_36060_LO     
            mov.b   #0FFh,&P5OUT          
              CALL    #WR_1byte_36060_DATA
        mov.b   #015h,&P5OUT          ;给寄存器0x15h写入FF
          CALL    #WR_1byte_36060_LO     
            mov.b   #0FFh,&P5OUT          
              CALL    #WR_1byte_36060_DATA
        mov.b   #024h,&P5OUT          ;寄存器0x0024写入0
          CALL    #WR_1byte_36060_LO     
            mov.b   #00h,&P5OUT          
              CALL    #WR_1byte_36060_DATA
        mov.b   #025h,&P5OUT          ;寄存器0x025写入0
          CALL    #WR_1byte_36060_LO     
            mov.b   #00h,&P5OUT          
              CALL    #WR_1byte_36060_DATA
        ;寄存器0x030h写入10001010,
	;由外部提供视频同步信号,通过FI管脚区分奇偶场,视频场开始标志为VSYNC上升沿,
	;FI为高表示奇场,象素值为0~255,8位视频总线
        mov.b   #030h,&P5OUT          ;给寄存器0x30h写入8E
          CALL    #WR_1byte_36060_LO     
;            mov.b   #08Eh,&P5OUT          
                    mov     #MEM_36060+48,R7
                    mov.b   0(R7),&P5OUT         ;控制文件大小
              CALL    #WR_1byte_36060_DATA
        ;寄存器0x031h写入01000111,
	;垂直与水平同步脉冲均为高电平有效,FI为高表示奇场,PVALID为高时表示有效象素
        mov.b   #031h,&P5OUT          ;给寄存器0x31h写入47
          CALL    #WR_1byte_36060_LO     
;            mov.b   #05Dh,&P5OUT          
                    mov     #MEM_36060+49,R7
                    mov.b   0(R7),&P5OUT         ;控制文件大小
              CALL    #WR_1byte_36060_DATA
        ;寄存器0x032h写入00,
	;垂直与水平方向均无压缩
        mov.b   #032h,&P5OUT          ;给寄存器0x32h写入00
          CALL    #WR_1byte_36060_LO     
;            mov.b   #00h,&P5OUT          
                    mov     #MEM_36060+50,R7
                    mov.b   0(R7),&P5OUT         ;控制文件大小
              CALL    #WR_1byte_36060_DATA
        ;寄存器0x042h(Vstart15:8)写入00,0x043(Vstart7:0)写入11,0x044(Vend15:8)写入00,0x45(Vend7:0)写入255,
	;垂直有效象素区间为12:255
        ;寄存器0x046h(Hstart15:8)写入00,0x047(Hstart7:0)写入2,0x048(Hend15:8)写入00,0x49Hend7:0)写入255,
	;水平有效行区间为3:255
        mov.b   #042h,&P5OUT          ;给寄存器0x42h写入00
          CALL    #WR_1byte_36060_LO     
;            mov.b   #0,&P5OUT          
                    mov     #MEM_36060+66,R7
                    mov.b   0(R7),&P5OUT         ;控制文件大小
              CALL    #WR_1byte_36060_DATA
        mov.b   #043h,&P5OUT          ;给寄存器0x43h写入11
          CALL    #WR_1byte_36060_LO     
;            mov.b   #028h,&P5OUT          
                    mov     #MEM_36060+67,R7
                    mov.b   0(R7),&P5OUT         ;控制文件大小
              CALL    #WR_1byte_36060_DATA

⌨️ 快捷键说明

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