导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→求助!利用89C52模拟SPI协议对AT89S52的串口编程[yuanafei]

 *第29696篇: 求助!利用89C52模拟SPI协议对AT89S52的串口编程?

  
楼 主:yuanafei 2005年2月22日11:57
 求助!利用89C52模拟SPI协议对AT89S52的串口编程?
;请各位大侠指教哪个地方出问题导致无法全片擦除?(利用89C52模拟SPI协议对AT89S52串口编程)
;P0.6连接到P1.7,P0.5连接到P1.6,P0.4连接到P1.5,RST接+5V
;晶体为11.0592M
;yuanafei@163.COM
              SCK  BIT  P0.6
              MIN  BIT  P0.5
              MOUT BIT  P0.4                                          
              ORG  0000H          
              MOV   SP,#60H                
              MOV   R1,#02H
              MOV   R2,#5EH
      RESET:  MOV   @R1,#00H
              INC   R1
              DJNZ  R2, RESET     
              MOV   P0, #0FFH      ;把SCK,MIN,MOUT置高电平                                                              
              ACALL DIMS50             
              ACALL DIMS50           
;主程序///////////////////////////////////////
      MAIN:   ACALL PROGRAM      ;允许擦写        
              ACALL DIMS10       ;延时10毫秒            
              ACALL ERASE        ;全片擦除 
              ACALL DIMS50       ;延时50毫秒
              ACALL DIMS50                                                             
              SJMP  $           
;/////////////////////////////////////////////
       WBYTE: CLR   C
              MOV   B,  #08H    ;移位8次        
       W1:    RRC   A           ;低位在前,高位在后   
              MOV   MOUT, C     ;由P0.4进入AT89S52的P1.5  
              CLR   SCK
              NOP
              NOP
              NOP                                                 
              SETB  SCK         ;上升沿采样数据                                              
              DJNZ  B,  W1                              
              ACALL DIMS1       ;一个字节后延时1毫秒
              ACALL DIMS1       ;进入内部定时写              
              RET       
;////////////////////////////////////////////////////
      PROGRAM:MOV   A,  #0ACH          ;允许擦写 
              ACALL WBYTE
              MOV   A,  #53H
              ACALL WBYTE
              MOV   A,  #00H
              ACALL WBYTE
              MOV   A,  #00H
              ACALL WBYTE
              ACALL DIMS10             
              RET        
;////////////////////////////////////////////////////
      ERASE:  MOV   A,  #0ACH           ;全片擦除 
              ACALL WBYTE           
              MOV   A,  #80H
              ACALL WBYTE
              MOV   A,  #00H
              ACALL WBYTE
              MOV   A,  #00H
              ACALL WBYTE
              ACALL DIMS10
              ACALL DIMS50
              RET  
;////////////////////////////////////////////////////
       WPAGE: MOV   A,  #50H            ;
              ACALL WBYTE
              MOV   A,  #00H
              ACALL WBYTE
              MOV   R0, #00H
              MOV   R2, #00H
              MOV   DPTR, #SEGPT1            
       WP1:   MOV   A,  R0
              MOVC  A,  @A+DPTR                 
              ACALL WBYTE
              ACALL DIMS10   
              INC   R0                   
              DJNZ  R2, WP1             
              ACALL DIMS50             
              RET              
;延时子程序/////////////////////////////////////////             
      DIMS1:  MOV    5FH, #0FFH           ;
      LOOP1:  NOP
              NOP
              DJNZ   5FH,  LOOP1
              RET
      DIMS10: MOV    5EH,  #0AH           ;
      LOOP2:  ACALL  DIMS1
              DJNZ   5EH,  LOOP2 
              RET
      DIMS50: MOV    5DH,  #2DH           ;
      LOOP3:  ACALL  DIMS10
              DJNZ   5DH,  LOOP3
              RET            
;/////////////////////////////////////////////////
      SEGPT1: DB  75H, 81H, 60H, 79H, 02H, 7AH, 5EH, 77H, 00H, 09H,0DAH,0FBH, 75H, 90H,0FFH,  75H
              DB  30H, 3FH, 75H, 31H, 06H, 75H, 32H, 5BH, 75H, 33H, 4FH, 75H, 34H, 66H,  75H, 35H
              DB  6DH, 11H, 25H, 01H, 21H, 79H, 30H, 7AH, 00H, 0E7H,0F5H,80H, 0AH, 8AH,  90H, 75H
              DB  37H, 0E6H,00H, 00H,0D5H, 37H, 0FBH,53H, 90H, 0F0H,09H, 0B9H,36H, 0EBH, 22H,0FFH
              DB  0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
              DB  0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
              DB  0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
              DB  0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
              DB  0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
              DB  0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
              DB  0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
              DB  0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
              DB  0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
              DB  0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
              DB  0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
              DB  0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
              END


>>>>>>对该主题发表你的看法

本主题贴数1,分页: [第1页]


[上一篇主题]:求IEEE1386-2001 & IEEE 1386.1-2001

[下一篇主题]:求W77E58的编程器和仿真器 越便宜越好