首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

单片机控制板6264与2864不稳定?

单片机控制板6264与2864不稳定?

这几天我做的一块单片机LED屏控制板(AT89C52),使用了6264和2864,当我把2864里的数据传给LED屏时,观察数据存储区内的数据与DPTR内数据不一致。电路已仔细检查没问题。请高手指点。附源程序(24*32点阵):
           ORG     0000H
           SJMP    MAIN
MAIN:      
           MOV    TMOD,#21H     ;T1 模式2,T0 模式1
           MOV    TH1,#0F3H
           MOV    TL1,#0F3H
           SETB   8EH           ;TCON.6=1,OPEN T1
           MOV    TH0,#00
           MOV    TL0,#00

NEXT:      MOV    R6,#00H     ;显示地址display refresh data
           MOV    R7,#00H     ;
DISP :     MOV    R0,#00      ;
TM256:     MOV    R3,#00      ;
TM512:     MOV    R2,#00H     ;R2 是行计数器ROW COUNTER
                       
CONT2:     MOV    R1,#00      ;R1 行字节计数器ROW BYTE COUNTER
           MOV    P1,#01H     ;选择第1组select group1
           MOV    DPTR,#8001H ;组选择锁存get lock signal LE1   
           MOVX   @DPTR,A     ;

           MOV    DPH,R6      ;指向显示地址point to display data address (6264)
           MOV    DPL,R7
     
DISP0:     MOVX   A,@DPTR     ;第一单元数据送A寄存器CELL DATA--->REGISTER ACC
           INC    DPTR        ;指向下一单元地址POINT TO 0001H CELL
           INC    R1          ;字节计数器+1BYTE COUNTER +1
           MOV    P1,A        ;第一单元数据送显示屏 CELL DATA--->REGISTER ACC-->LED
           CLR    0B3H         ;B3H即P3.3=INT1,pulse for 165 transfer data
           SETB   0B3H         ;
           CLR    0B5H         ;B5H即P3.5=T1 one data every pulse
           SETB   0B5H
           CLR    0B5H         
           SETB   0B5H
           CLR    0B5H         
           SETB   0B5H
           CLR    0B5H         
           SETB   0B5H
           CLR    0B5H         
           SETB   0B5H
           CLR    0B5H         
           SETB   0B5H
           CLR    0B5H         
           SETB   0B5H
           CLR    0B5H         
           SETB   0B5H

           CLR    0B2H              ;locked to 245
           SETB   0B2H              ;DISPLAY

           CJNE   R1,#03H,DISP0   ;(SAME NAME ROW) group 1 has completed? a row is 03H bytes.

           PUSH   DPH         ;yes,DTPR ---> stack
           PUSH   DPL         ;
           MOV    R4,DPH      ;store DPTR temporary
           MOV    R5,DPL      ;
           MOV    P1,#08H     ;select group2
           MOV    DPTR,#8001H   ;get lock signal LE1
           MOVX   @DPTR,A     ;
           MOV    DPH,R4      ;take out DPTR
           MOV    DPL,R5      ;
           CLR    C
           MOV    A,DPL      ;every group byte is 16row*20,
           ADD    A,#03DH    ;so next group first byte is after 15row*20+17byte
           MOV    DPL,A      ;its hex is 013DH.
           MOV    A,DPH      ;
           ADDC   A,#01H      ;
           MOV    DPH,A      ;
     
DISP1:     MOVX   A,@DPTR
           INC    DPTR
           INC    R1
           MOV    P1,A
           CLR    0B3H         ;B3H即P3.3=INT1
           SETB   0B3H
           CLR    0B5H         ;B5H即P3.5=T1
           SETB   0B5H
           CLR    0B5H         
           SETB   0B5H
           CLR    0B5H         
           SETB   0B5H
           CLR    0B5H         
           SETB   0B5H
           CLR    0B5H         
           SETB   0B5H
           CLR    0B5H         
           SETB   0B5H
           CLR    0B5H         
           SETB   0B5H
           CLR    0B5H         
           SETB   0B5H

           CLR    0B2H              ;locked to 245
           SETB   0B2H              ;DISPLAY     

           CJNE   R1,#06H,DISP1   ;group 2 has completed?
                                  ;same name row transfer completed?
          ; MOV    R4,DPH
          ; MOV    R5,DPL
          ; MOV    A,R5
          ; SUBB   A,#02FH
           ;MOV    R5,A
          ; MOV    DPL,R5
          ; MOV    A,R4
          ; SUBB   A,#00
          ; MOV    R4,A
          ; MOV    DPH,R4  

           
           CLR    0B2H
           SETB   0B2H              ;locked to 245.
           MOV    P1,R2             ;ROW SELECT TRANSFER TO P1
           MOV    DPTR,#08000H
           MOVX   @DPTR,A          ;get ROW select locked signal LE?
           INC    R2
           POP    DPL
           POP    DPH

           CJNE   R2,#010H,CONT1    ;16 rows have completed?
           INC    R3                ;reach every screen display 512 times.
           CJNE   R3,#0FFH,TIM256   ;   
           INC    R0                ;
           CJNE   R0,#02H,TIM512    ;
           LJMP   DISP
TIM512:    LJMP   TM512
CONT1:     LJMP   CONT2
TIM256:    AJMP   TM256


END
我没有读完你的程序,不过你的时序控制出现问题了!

我也有这样的问题 不过我不懂编程 除了程式还有其它问题吗?

返回列表