导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→x5045程序设计[baolqkun]

 *第14690篇: x5045程序设计

  
楼 主:baolqkun 2003年7月21日17:05
 x5045程序设计
对X5045的读写程序总是不对
大家有没有好的程序拿来分享
谢谢
  
2楼:nobody 2003年7月21日17:14
 http://gzmcu.myrice.com/software/files/ic_card/ic5045.c
  
3楼:baolqkun 2003年7月21日19:25
 大家看看这程序,我怎么写不进去
cs  bit p1.0
si  bit p1.1
sck  bit p1.2
so  bit p1.3
wren_inst equ 06h
wrdi_inst equ 04h
wrsr_inst equ 01h
rdsr_inst equ 05h
write_inst equ 02h
read_inst equ 03h
byte_addr equ  10h
byte_data equ 11h
page_addr equ 1f0h
page_data1 equ 22h
page_data2 equ 33h
page_data3 equ 44h
status_reg equ  00h
max_poll equ 99h
init_state equ 08h
inis_state equ 00h
slic  equ 030h

;************************************************
;*interal ram
 stack_top equ 060h

;************************************************
;*code

 org 0000h
 ljmp main

 org 0100h
main: 
 mov sp,#stack_top
 clr ea
 setb so
 clr sck
 clr si
 setb cs
 lcall wren_cmd
 lcall byte_write
 lcall wren_cmd 
 lcall byte_read
 lcall wren_cmd
 lcall rst_wdog
 jmp main

;*****************************
;*name: wren_cmd
;*descritpion: set write enable latch
;*function:this routine sends the command to enable writes to the eeprom memory array or
;*status register
;*calls: outbyt
;*input: none
;*output:none
;*register usage: a
;****************************
wren_cmd:
 clr sck
 clr cs
 mov a,#wren_inst
 lcall outbyt
 clr sck
 setb cs
 ret

;****************************
;*name: wrdi_cmd
;*description:reset write enable latch
;*function:this routine sends the commond to disable writes to the eeprom memory array or
;*status register
;*calls: outbyt
;*input: none
;*output: none
;*register usage: a
;****************************
wrdi_cmd:
 clr sck
 clr cs
 mov a,#wrdi_inst
 lcall outbyt
 clr sck
 setb cs
 ret 

;****************************
;*name: wrsr_cmd
;*description: write status register
;*function:this routine sends the command to write the wd0,wd1,bpo and bp0 eeprom
;*bits in the status register
;*call: outbyt,wip_poll
;*input: none
;*output: none
;*register usage: a
;***************************
wrsr_cmd:
 clr sck
 clr cs
 mov a,#wrsr_inst
 lcall outbyt
 mov a,#status_reg
 lcall outbyt
 clr sck
 setb cs
 lcall wip_poll
 ret

;***************************
;*name: rdsr_cmd
;*description: read status register
;*function: this routine sends the command to read the status register
;*call: outbyt, inbyt
;*input: none
;*output: a=status register
;*register usage: a
;***************************
rdsr_cmd:
 clr sck
 clr cs
 mov a,#rdsr_inst
 lcall outbyt
 lcall inbyt
 clr sck
 setb cs
 ret

;***************************
;*name: byte_write
;*description: signle byte write
;*funtion:this routine sends the command to write a signle byte to the eeprom memory array
;*calls: outbyt, wip_poll
;*input: none
;*output: none
;*register usage: a,b
;**************************
byte_write:
 mov dptr,#byte_addr
 clr sck
 clr cs
 mov a,#write_inst
 mov b,dph
 mov c,b.0
 mov acc.3,c
 lcall outbyt
 mov a,dpl
 lcall outbyt
 mov a,#byte_data
 lcall outbyt
 clr sck
 setb cs
 lcall wip_poll
 ret

;******************************
;*name: byte_read
;*description: signle byte read
;*function: this routine sends the commond to read a signle byte from the eeprom momery array
;*calls: outbyt, inbyt
;*input: none
;*output: a=read byte
;*register usage: a,b
;*****************************
byte_read:
 mov dptr,#byte_addr
 clr sck
 clr cs
 mov a,#read_inst
 mov b,dph
 mov c,b.0
 mov acc.3,c
 lcall outbyt
 mov a,dpl
 lcall outbyt
 lcall inbyt
 clr sck
 setb cs
 ret

;*****************************
;*name: page_write
;*description: page write
;*function: this routine sends the commond to write three consecutive bytes to the eeprom
;*memory array using page mode
;*calls: outbyt,wip_poll
;*input:none
;*output:none
;*register usage: a, b
;****************************
page_write:
 mov dptr,#page_addr
 clr sck
 clr cs
 mov a,#write_inst
 mov b,dph
 mov c,b.0
 mov acc.3,c
 lcall outbyt
 mov a,dpl
 lcall outbyt
 mov a,#page_data1
 lcall outbyt
 mov a,#page_data2
 lcall outbyt
 mov a,#page_data3
 lcall outbyt
 clr sck
 setb cs
 lcall wip_poll
 ret

;*******************************
;*name: sequ_read
;*description: sequential read
;*function: this routine sends the command to read three consecutive bytes from the 
;*memory array using sequential mode
;*calls: outbyt, inbyt
;*input: none
;*output:a=last byte read
;*register usage: a,b
;******************************
sequ_read:
 mov dptr,#page_addr
 clr sck
 clr cs
 mov a,#read_inst
 mov b,dph
 mov c,b.0
 mov acc.3,c
 lcall outbyt
 mov a,dpl
 lcall outbyt
 lcall inbyt
 lcall inbyt
 lcall inbyt
 clr sck 
 clr cs
 ret

;******************************
;*name: rst_wdog
;*description: reset watchdog timer
;*function : this routine resets the watchdog timer without sending a command
;*call: none
;*input: none
;*output: none
;*register usage: none
;*****************************
rst_wdog:
 clr cs
 setb cs
 ret

;*****************************
;*name: wip_poll
;*description: write-in-progress polling
;*function: this routine polls for completion of a nonvolatile write cycle by examine
;*wip bit of the status register
;*calls: rdsr_cmd
;*input: none
;*output: none
;*register usage:r1,a
;*****************************
wip_poll: 
 mov r1,#max_poll
wip_poll1:
 lcall rdsr_cmd
 jnb acc.0,wip_poll2
 djnz r1,wip_poll1
wip_poll2:
 ret

;*****************************
;*name: outbyt
;*description: sends byte to eeprom
;*function: this routine shifts out a byte,starting with the msb, to the eeprom
;*calls: none
;*input: a=byte to be sent
;*output: none
;*register usage: r0,a
;*****************************
outbyt:
 mov r0,#08
outbyt1:
 clr sck
 rlc a
 mov si,c
 setb sck
 djnz r0,outbyt1
 clr si
 ret

;****************************
;*name: inbyt
;*description: receives byte from eeprom
;*function: this routine receives a byte ,msb first from the eeprom
;*calls: none
;*input: none
;*output: a=revceive byte
;*register usage: r0,a
;***************************
inbyt: 
 mov r0,#08
inbyt1: 
 setb sck
 clr sck
 mov c,so
 rlc a
 djnz r0,inbyt1
 ret
 
 END

  
4楼:zizzfish 2003年7月21日19:58
 我的看法!
X25045有一个启动程序,要
STAX:       SETB   XCS
               NOP
               CLR    SCK25
               NOP
              CLR    XCS
              NOP
              RET
你的程序在送时钟时速度太快了,尽量加个NOP.
  
5楼:baolqkun 2003年7月22日08:27
 但是我是用仿真器一步一步执行的话,

但是我是用仿真器一步一步执行的话,
也不行
那应该跟延时没关系吧!
  
6楼:zizzfish 2003年7月22日08:32
 你不要用仿真器试试看。在发送和接收数据时要关中断。
  
7楼:baolqkun 2003年7月22日09:42
 按你的方法做了,还是不行,继续请教!
cs  bit p2.2
si  bit p1.7 
sck  bit p2.0
so  bit p2.1
wren_inst equ 06h
wrdi_inst equ 04h
wrsr_inst equ 01h
rdsr_inst equ 05h
write_inst equ 02h
read_inst equ 03h
byte_addr equ  10h
byte_data equ 11h
page_addr equ 1f0h
page_data1 equ 22h
page_data2 equ 33h
page_data3 equ 44h
status_reg equ  00h
max_poll equ 99h
init_state equ 08h
inis_state equ 00h
slic  equ 030h

stack_top equ 060h

;************************************************
;*code

 org 0000h
 ljmp main

 org 0100h
main: 
 mov sp,#stack_top
 clr ea
 nop
 setb so
 nop
 setb cs
 nop
 clr sck
 nop
 clr si
 nop
 lcall wren_cmd
 lcall wrsr_cmd
 lcall wren_cmd
 lcall byte_write
 lcall wren_cmd 
 lcall byte_read
 lcall wren_cmd
 lcall rst_wdog
 jmp main

;*****************************
wren_cmd:
 clr sck
 nop
 clr cs
 nop
 mov a,#wren_inst
 lcall outbyt
 clr sck
 nop
 setb cs
 nop
 ret

;****************************
wrdi_cmd:
 clr sck
 nop
 clr cs
 nop
 mov a,#wrdi_inst
 lcall outbyt
 clr sck
 nop
 setb cs
 nop
 ret 

;****************************
wrsr_cmd:
 clr sck
 nop
 clr cs
 nop
 mov a,#wrsr_inst
 lcall outbyt
 mov a,#status_reg
 lcall outbyt
 clr sck
 nop
 setb cs
 nop
 lcall wip_poll
 ret

;***************************
rdsr_cmd:
 clr sck
 nop
 clr cs
 nop
 mov a,#rdsr_inst
 lcall outbyt
 lcall inbyt
 clr sck
 nop
 setb cs
 nop
 ret

;***************************
byte_write:
 mov dptr,#byte_addr
 clr sck
 nop
 clr cs
 nop
 mov a,#write_inst
 mov b,dph
 mov c,b.0
 mov acc.3,c
 lcall outbyt
 mov a,dpl
 lcall outbyt
 mov a,#byte_data
 lcall outbyt
 clr sck
 nop
 setb cs
 nop
 lcall wip_poll
 ret

;******************************
byte_read:
 mov dptr,#byte_addr
 clr sck
 nop
 clr cs
 nop
 mov a,#read_inst
 mov b,dph
 mov c,b.0
 mov acc.3,c
 lcall outbyt
 mov a,dpl
 lcall outbyt
 lcall inbyt
 clr sck
 nop
 setb cs
 nop
 ret

;*****************************
page_write:
 mov dptr,#page_addr
 clr sck
 nop
 clr cs
 nop
 mov a,#write_inst
 mov b,dph
 mov c,b.0
 mov acc.3,c
 lcall outbyt
 mov a,dpl
 lcall outbyt
 mov a,#page_data1
 lcall outbyt
 mov a,#page_data2
 lcall outbyt
 mov a,#page_data3
 lcall outbyt
 clr sck
 nop
 setb cs
 nop
 lcall wip_poll
 ret

;*******************************
sequ_read:
 mov dptr,#page_addr
 clr sck
 nop
 clr cs
 nop
 mov a,#read_inst
 mov b,dph
 mov c,b.0
 mov acc.3,c
 lcall outbyt
 mov a,dpl
 lcall outbyt
 lcall inbyt
 lcall inbyt
 lcall inbyt
 clr sck
 nop 
 setb cs
 nop
 ret

;******************************
rst_wdog:
 clr cs
 nop
 setb cs
 ret

;*****************************
wip_poll: 
 mov r1,#max_poll
wip_poll1:
 lcall rdsr_cmd
 jnb acc.0,wip_poll2
 djnz r1,wip_poll1
wip_poll2:
 ret

;*****************************
outbyt:
 mov r0,#08
outbyt1:
 clr sck
 rlc a
 mov si,c
 setb sck
 djnz r0,outbyt1
 clr si
 ret

;****************************
inbyt: 
 mov r0,#08
inbyt1: 
 setb sck
 nop
 clr sck
 mov c,so
 rlc a
 djnz r0,inbyt1
 ret
 
 END

  
8楼:baolqkun 2003年7月22日09:44
 我也写片子了,读出的数据还是不对,真要命
  
9楼:Lichunfu 2003年7月22日10:20
 我有一个,写得不怎么样,但可以用,供你参考;
SCK  BIT P1.5  ;X5045时钟
SDI  BIT P1.6  ;X5045串行数据输入线
CS50  BIT P1.7  ;X5045片选信号, "0"有效
SDO  BIT P3.2  ;X5045串行数据输出线
;X5045 命令定义
WREN  EQU 06H  ;写使能命令(置位写使能锁存器)
WRDI  EQU 04H  ;写保护命令(复位写使能锁存器)
RDSR  EQU 05H  ;读状态寄存器命令
WRSR  EQU 01H  ;写状态寄存器命令
READD  EQU 03H  ;读数据命令(其中D3为数据地址A8)
WRITED  EQU 02H  ;写数据命令(其中D3为数据地址A8)
;*******************************************************************
;X5045 WatchDog应用程序集
;===================================================================
;功能:向X5045串行输出8Bit数据
;入口参数:A=数据
;出口参数:(无)
;影响资源:A、R6
;占用堆栈:2
;===================================================================
SDO8B:
 MOV R6, #08H
SDO8B0:
 CLR SCK
 RLC A
 MOV SDI, C
 SETB SCK
 DJNZ R6, SDO8B0
 RET
;===================================================================
;功能:从X5045串行读出8Bit数据
;入口参数:(无)
;出口参数:A=数据
;影响资源:A、R6
;占用堆栈:2
;===================================================================
SDI8B:
 SETB SCK
 MOV R6, #8
SDI8B0:
 SETB SDO
 CLR SCK
 NOP
 MOV C, SDO
 RLC A
 SETB SCK
 DJNZ R6, SDI8B0
 RET
;===================================================================
;功能:检查WIP标志,只到WIP标志无效时退出
;入口参数:(无)
;出口参数:(无)
;影响资源:A、R6、R7
;占用堆栈:4
;===================================================================
CHKWIP:
 MOV R7, #200  ;设置最大循环次数
CHKWIP0:
 CLR SCK
 CLR CS50
 MOV A, #RDSR
 CALL SDO8B
 CALL SDI8B
 SETB CS50
 SETB SCK
 JNB ACC.0, CHKWIP1
 DJNZ R7, CHKWIP0
CHKWIP1:
 RET
;===================================================================
;功能:写X5045控制字节
;入口参数:ROMData=控制字节
;出口参数:(无)
;影响资源:A、R6、R7
;占用堆栈:8
;===================================================================
WRSRWDT:
 CLR SCK
 CLR CS50
 MOV A, #WREN
 CALL SDO8B
 SETB CS50
 NOP
 CLR CS50
 MOV A, #WRSR
 CALL SDO8B
 MOV A, ROMData
 CALL SDO8B
 SETB CS50
 SETB SCK
 CALL CHKWIP
 RET
;===================================================================
;功能:向X5045写入一字节数据
;入口参数:ROMData=数据、DPTR=数据存储地址
;出口参数:(无)
;影响资源:A、PSW、R6、R7
;占用堆栈:8
;===================================================================
WRDROM:
 CLR SCK
 CLR CS50
 MOV A,#WREN
 CALL SDO8B  ;允许写
 SETB CS50
 NOP
 CLR CS50  ;激活写操作
 MOV A, DPH
 RRC A
 MOV A, #WRITED
 MOV ACC.3, C ;插入地址第8位
 CALL SDO8B
 MOV A, DPL
 CALL SDO8B  ;写入存储地址
 MOV A, ROMData
 CALL SDO8B  ;写入数据
 SETB CS50  ;结束写操作
 SETB SCK
 CALL CHKWIP
 RET
;===================================================================
;功能:从X5045读出一字节数据
;入口参数:DPTR=数据存储地址
;出口参数:A=数据
;影响资源:A、PSW、R6
;占用堆栈:4
;===================================================================
RDDROM:
 MOV A, DPH
 RRC A
 CLR SCK
 CLR CS50
 MOV A, #READD
 MOV ACC.3, C
 CALL SDO8B  ;送读数据命令和第8位地址
 MOV A, DPL
 CALL SDO8B  ;送数据低8位地址
 CALL SDI8B  ;读取数据
 SETB CS50
 SETB SCK
 RET
;===================================================================
;功能:清除WatchDog定时器
;入口参数:(无)
;出口参数:(无)
;影响资源:A、DPTR、PSW、R6
;占用堆栈:4
;===================================================================
CLRWDT:
 CLR CS50
 NOP 
 SETB CS50
 RET
  
10楼:APEARLIU 2003年7月22日11:09
 下面是一个测试成功的程序,请试验,若不能
下面是一个测试成功的程序,请试验,若不能成功,请在上电后延时2秒后再进行读写,是否成功,都请回复,谢谢
;**************************************************************************
;操作X25045
;**************************************************************************
WRIT_ENABLE:
 CLR SCK
 CLR CS
 MOV A,#00000110B   ;Write-enable
 LCALL OUTX
 SETB CS
 RET
;****************************************************************************
W_BYTE:
 LCALL WRIT_ENABLE
 CLR SCK
 CLR CS
 MOV B,ADDR
 MOV C,B.0
 MOV A,#02H   ;Write instruction
 MOV ACC.3,C
 LCALL OUTX
 MOV A,ADDR+1         ;Address_writed
 LCALL OUTX
 MOV A,DATATEM
 LCALL OUTX
 CLR SCK
 SETB CS
 LCALL R_WIP
 RET
;****************************************************************************
W_PAGE:CLR SCK
LOOPWP1:
 LCALL WRIT_ENABLE
 CLR SCK
 CLR CS
 MOV B,ADDR
 MOV C,B.0
 MOV A,#02H   ;Write instruction
 MOV ACC.3,C
 LCALL OUTX
 MOV A,ADDR+1         ;Address_writed
 LCALL OUTX
 MOV A,@R1
 LCALL OUTX
 CLR SCK
 SETB CS
 LCALL R_WIP
 MOV A,ADDR+1
 ADD A,#01H
 MOV ADDR+1,A
 MOV A,ADDR
 ADDC A,#00H
 MOV ADDR,A
 INC R1
 DJNZ R7,LOOPWP1
 RET
;****************************************************************************
OUTX: PUSH R7
 MOV R7,#08H
OUTX_1:CLR SCK
 NOP
 NOP
 RLC A
 MOV DI,C
 NOP
 NOP
 SETB SCK
 NOP
 NOP
 DJNZ R7,OUTX_1
 CLR DI
 POP R7
 RET
;****************************************************************************
R_WIP: NOP
 CLR SCK
 CLR CS
 NOP
 MOV A,#05H   ;Read instruction 
 LCALL OUTX
 LCALL INX
 CLR SCK
 SETB CS
 JB ACC.0,R_WIP
 RET
;****************************************************************************
R_BYTE:
 CLR SCK
 CLR CS
 MOV a,ADDR
 rrc a
 MOV A,#03H   ;Read instruction 
 MOV ACC.3,C
 LCALL OUTX
 MOV A,ADDR+1
 LCALL OUTX
 LCALL INX             ;Reading DATA,"R5=DATA"
 CLR SCK
 SETB CS
 RET
;****************************************************************************
R_PAGE:
 CLR SCK
 CLR CS
 MOV B,ADDR
 MOV C,B.0
 MOV A,#03H   ;Read instruction 
 MOV ACC.3,C
 LCALL OUTX
 MOV A,ADDR+1
 LCALL OUTX
LOOPRP:NOP
 LCALL INX             ;Reading DATA,"R5=DATA"
 MOV @R1,A
 INC R1
 DJNZ R7,LOOPRP
 CLR SCK
 SETB CS
 RET
;********************************************************
INX: PUSH R7
 MOV R7,#08H
INX_1: NOP
 CLR SCK
    NOP
       NOP
 MOV C,DO
 RLC A
 NOP
 SETB SCK
       NOP
 NOP
 DJNZ    R7,INX_1
 POP R7
 RET
;****************************************************************************
  
11楼:lvbin1980 2005年1月21日14:45
 [原创]大侠我的X5045调不通啊,数据读出总是零
找不出错误,硬件没有问题阿,有没有哪位大侠,把主程序调用的过程发上来瞧瞧,找不出问题啊,急死了
  
12楼:baolqkun 2003年7月22日16:56
 Lichunfu,你的程序我改动如下,怎么还是不行,莫非是硬件有问题???
SCK   BIT P2.0  ;X5045时钟
SDI   BIT P1.7  ;X5045串行数据输入线
CS50  BIT P2.2  ;X5045片选信号, "0"有效
SDO   BIT P2.1  ;X5045串行数据输出线
;X5045 命令定义
WREN   EQU 06H  ;写使能命令(置位写使能锁存器)
WRDI   EQU 04H  ;写保护命令(复位写使能锁存器)
RDSR   EQU 05H  ;读状态寄存器命令
WRSR   EQU 01H  ;写状态寄存器命令
READD   EQU 03H  ;读数据命令(其中D3为数据地址A8)
WRITED  EQU 02H  ;写数据命令(其中D3为数据地址A8)
;*******************************************************************

ORG 00H
 LJMP MAIN
MAIN:
 NOP
 LCALL WRSRWDT
 LCALL WRDROM
 LCALL RDDROM
 LCALL CLRWDT
 LJMP  MAIN
;*****************************************************************
;X5045 WatchDog应用程序集
;===================================================================
;功能:向X5045串行输出8Bit数据
;入口参数:A=数据
;出口参数:(无)
;影响资源:A、R6
;占用堆栈:2
;===================================================================
 
SDO8B:
 MOV R6, #08H
SDO8B0:
 CLR SCK
 RLC A
 MOV SDI, C
 SETB SCK
 DJNZ R6, SDO8B0
 RET
;===================================================================
;功能:从X5045串行读出8Bit数据
;入口参数:(无)
;出口参数:A=数据
;影响资源:A、R6
;占用堆栈:2
;===================================================================
SDI8B:
 SETB SCK
 MOV R6, #8
SDI8B0:
 SETB SDO
 CLR SCK
 NOP
 MOV C, SDO
 RLC A
 SETB SCK
 DJNZ R6, SDI8B0
 RET
;===================================================================
;功能:检查WIP标志,只到WIP标志无效时退出
;入口参数:(无)
;出口参数:(无)
;影响资源:A、R6、R7
;占用堆栈:4
;===================================================================
CHKWIP:
 MOV R7, #200  ;设置最大循环次数
CHKWIP0:
 CLR SCK
 CLR CS50
 MOV A, #RDSR
 CALL SDO8B
 CALL SDI8B
 SETB CS50
 SETB SCK
 JNB ACC.0, CHKWIP1
 DJNZ R7, CHKWIP0
CHKWIP1:
 RET
;===================================================================
;功能:写X5045控制字节
;入口参数:ROMData=控制字节
;出口参数:(无)
;影响资源:A、R6、R7
;占用堆栈:8
;===================================================================
WRSRWDT:
 CLR SCK
 CLR CS50
 MOV A, #WREN
 CALL SDO8B
 SETB CS50
 NOP
 CLR CS50
 MOV A, #WRSR
 CALL SDO8B
 MOV A, #00
 CALL SDO8B
 SETB CS50
 SETB SCK
 CALL CHKWIP
 RET
;===================================================================
;功能:向X5045写入一字节数据
;入口参数:ROMData=数据、DPTR=数据存储地址
;出口参数:(无)
;影响资源:A、PSW、R6、R7
;占用堆栈:8
;===================================================================
WRDROM:
 CLR SCK
 CLR CS50
 MOV A,#WREN
 CALL SDO8B  ;允许写
 SETB CS50
 NOP
 CLR CS50  ;激活写操作
 MOV A, DPH
 RRC A
 MOV A, #WRITED
 MOV ACC.3, C ;插入地址第8位
 CALL SDO8B
 MOV A, DPL
 CALL SDO8B  ;写入存储地址
 MOV A,#00
 CALL SDO8B  ;写入数据
 SETB CS50  ;结束写操作
 SETB SCK
 CALL CHKWIP
 RET
;===================================================================
;功能:从X5045读出一字节数据
;入口参数:DPTR=数据存储地址
;出口参数:A=数据
;影响资源:A、PSW、R6
;占用堆栈:4
;===================================================================
RDDROM:
 MOV A, DPH
 RRC A
 CLR SCK
 CLR CS50
 MOV A, #READD
 MOV ACC.3, C
 CALL SDO8B  ;送读数据命令和第8位地址
 MOV A, DPL
 CALL SDO8B  ;送数据低8位地址
 CALL SDI8B  ;读取数据
 SETB CS50
 SETB SCK
 RET
;===================================================================
;功能:清除WatchDog定时器
;入口参数:(无)
;出口参数:(无)
;影响资源:A、DPTR、PSW、R6
;占用堆栈:4
;===================================================================
CLRWDT:
 CLR CS50
 NOP 
 SETB CS50
 RET

END

  
13楼:APEARLIU 2003年7月22日17:10
 关于LICHUNFU的程序改动,你发我了
关于LICHUNFU的程序改动,你发我了,我的程序是经过硬件测试完全通过的,不过注释不是太完整。我是直接在PCB板上做的测试,未曾使用过仿真器
  
14楼:baolqkun 2003年7月22日20:20
 马虎,马虎,自己的错误,我把cs,sdi给整反了,后来终于查到了,不过还是谢谢大家!

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

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


[上一篇主题]:我通过i\o口点亮发光二极管

[下一篇主题]:[求助]