麻烦高手看下编写的AT89C52对TLC1543取样的程序

nwuwmz   2008-5-30 17:08 楼主
;-------------------1543对应的管脚接线方式-----------------------
;1543<<------>>AT89C52
;EOC<<------->>P1.5
;I/O CLOCK<<->>P1.6
;ADDRESS<<--->>P1.7
;DATAOUT<<--->>P3.0
;CS<<-------->>P3.1

;===============================================================

     CLK BIT 0B0H
    ADDR BIT 0B1H
    DAT BIT 0B4H
    CS BIT 0B5H
    EOC BIT 0B7H
;===============================================================

RDAD:  ORL P3,#03H    ;CS=1,I/O CLOCK=1   
WAIT1: JNB 0B7H,WAIT1    ;查询等待,直至EOC为高电平  
        CLR 0B0H    ;I/0 CLOCK=0         
       CLR 0B5H    ;CS=0         
       CLR 0B1H    ;选择0通道        
        MOV R6,#08H    ;等待建立时间      
RLOOP1:CPL 0B0H    ;      
       DJNZ R6,RLOOP1    ;通道0选通      
        MOV R6,#0CH    ;           
RLOOP2:CPL 0B0H    ;           
       DJNZ R6,RLOOP2    ;插入6个I/O CLOCK  
       SETB 0B5H      ;         
       MOV R7,#04H    ;四次循环,读四个数据   
        MOV R0,#02H    ;要存入的寄存器地址   
RLOOP: ORL P3,#03H    ;I/O CLOCK=1         
WAIT2: JNB 0B7H,WAIT2    ;查询等待,直至EOC为高电平  
        CLR 0B0H    ;I/0 CLOCK=0        
       CLR 0B5H    ;CS=0         
       MOV A,#05H     ;           
       CLR C       ;           
       SUBB A,R7      ;         
       MOV 21H,A      ;选择通道,并等待建立时间
        MOV R6,#08H    ;         
RLOOP3:MOV C,0B4H     ;读DATA端口      
        MOV A,20H      ;         
       RL A        ;         
       MOV 20H,A      ;20H寄存器左移一位      
        MOV 00H,C      ;读入数据        
        CJNE R6,#05H,A1      ;判断R6<5?        
A1:    JC JUMP        ;R6<5,跳转到J1      
       MOV C,0BH      ;           
       MOV 0B1H,C     ;送地址           
        MOV A,21H      ;           
       RL A        ;           
       MOV 21H,A      ;21H寄存器右移一位     
JUMP:  CPL 0B0H    ;         
       CPL 0B0H    ;1个I/O CLOCK        
       DJNZ R6,RLOOP3    ;         
       MOV R6,#04H    ;           
RLOOP4:CPL 0B0H    ;         
       DJNZ R6,RLOOP4    ;插入2个I/O CLOCK   
       SETB 0B5H      ;           
       CJNE R7,#03H,A2      ;判断R7<3?        
A2:    JNC STORE1     ;R7<3,继续,否则跳转     
        MOV A,@R0      ;           
       CJNE A,20H,CMP1      ;不相等,跳转到CMP1     
       SJMP STORE1    ;           
CMP1:  MOV 10H,C      ;
STORE1:MOV @R0,20H    ;存数         
        INC R0         ;           
       DJNZ R7,RLOOP     ;         
       RET
;===============================================================

这个程序是为了分别读取左右红外和左右灰度4个传感器的数据,分别存放再02H,03H,04H,05H四个地址单元中。
麻烦高手能帮忙看下

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复