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

📄 fet430uif_eeprom.s43

📁 MSP430仿真器上EEPROM数据的烧写程序
💻 S43
📖 第 1 页 / 共 2 页
字号:

//MSP-fet430uif 写EEPROM程序  2007.8.1

#include  "msp430x16x.h";

;PORT2
KEYH0           equ    01h              ;输入 0
SDA           	equ    02h              ;1
KEYH2           equ    04h              ;输入 0
SCL             equ    08h              ;1
KEYV3           equ    10h              ;输入 0
KEYV2           equ    20h              ;输入 0
KEYV1           equ    40h              ;输入 0
KEYV0           equ    80h              ;输入 0


; PSTAT 状态标志
TM              equ    01h              ; IBUTTON
URWAKE          equ    02h              ;
D2              equ    04h              ;
D3              equ    08h              ;
COMOK           equ    10h              ;
BAD_C           equ    20h              ;
ERR             equ    40h              ;
NEGA            equ    80h              ;

;--------Word definitions used-------------------------------------------
WDT_stop      equ    05A80h               ;Watchdog hold+key
WDT_1s        equ    05A1Ch               ;Watchdog = timer, cleared,
                                          ;source = ACLK, interval= 1000ms

;--------RAM bytes used for variables------------------------------------
SYSTEM1         equ     0200h
SYSTEM2         equ     0201h           ;
SYSTAT          equ     0202h           ;
PSTAT           equ     0203h           ;
INTSTAT         equ     0204h           ;
MSTAT           equ     0205h		;
ADDR0           equ     0206h           ;数据
ADDR1           equ     0207h           ;
ADDR2           equ     0208h           ;
ADDR3           equ     0209h           ;

ICADDR0		equ     020Ah           ;
ICADDR1		equ     020Bh           ;

TRANS1          equ     020Ch           ;UERR
TRANS           equ     020Dh;
RXBUF           equ     020Eh
ICDATA          equ     020Fh		;总抄表数

WRTM            equ     0210h           ;写几个数据
RDTM            equ     0212h           ;读几个数据

EEDATA          equ     0214h           ;
BITCON          equ     0215h           ;传送数据位数

LINEH           equ     0217h           ;线地址
LINEL           equ     0216h

PAGE1           equ     0218h           ;页地址
PAGEN           equ     0219h           ;
BPAGE           equ     021Ah           ;
PAGEGA		equ     021Bh
NUMB0           equ     021Ch           ;
NUMB1           equ     021Dh           ;
NUMB2           equ     021Eh           ;
NUMB3           equ     021Fh           ;

R25           	equ     0220h           ;
R21		equ     0222h           ;
DATABUFFx	equ     0250h           ;

;******************************************************************************
                 ;ORG     0C000H
                RSEG   CODE                  ; 程序开始处
RESET
                nop
                mov.w   #600h,SP             ; 初始化堆栈指
                call    #Setup             ;configure MSP430 for application

               
;---------------------------------------------
Mainloop
                nop
                nop
                mov.w	#0,ICADDR0
                mov.w	#512,RDTM
                call	#ICreadn
                
                mov.w	#0,R5
                mov.w	#0,ICADDR0
                mov.w	#32,R8
writenext                
                mov.w	#16,WRTM               
                call	#ICwriten
                add.w	#16,ICADDR0   ;写16×32字节
                dec.w	R8
                jnz	writenext
                
                mov.w	#0,ICADDR0
                mov.w	#512,RDTM
                call	#ICreadn      ;读出512字节
                
Mainloop1
                
                bis     #LPM3,SR           ;Set SR bits for LPM3  五
                nop
                
                tst.b   INTSTAT
                jnz     Mainloop
                jmp     Mainloop1
                br      #RESET

;-----------------------------------------------------------------
;Configure modules and control registers   portx
;-----------------------------------------------------------------
Setup
StopWDT         mov     #WDT_stop,&WDTCTL   ; Stop WDT

		mov.b    #0a0h,&DCOCTL
                ;bic.b    #SELM_2,&BCSCTL2
                mov.b    #087h,&BCSCTL1           ; LFXT1 = LF XTAL
                ;bic.b    #SELS,BCSCTL2
               
                ;mov.b    #007h,&BCSCTL1
                
SetupOsc        bic.b   #OFIFG,&IFG1            ; Clear OSC fault flag
                mov.w   #0FFh,R25               ; R25 = Delay
SetupOsc1       dec.w   R25                     ; Additional delay to ensure start
                jnz     SetupOsc1               ;
                bit.b   #OFIFG,&IFG1            ; OSC fault flag set?
                jnz     SetupOsc                ; OSC Fault, clear flag again
                ;bis.b   #SELS+SELM_2,BCSCTL2     	; MCLK = SMCLK = XT2 (safe)
               
SetupP3         MOV.B   #000H,&P3SEL             ;
                MOV.B   #00AH,&P3DIR             ;P1.1 P1.3               
                mov.b   #0FFh,&P3OUT
                
RAMclr          clr    R4
                clr    R13                   ;
RCL             clr.b  200h(R13)             ;
                inc    R13                   ;
                cmp    #03F0h,R13            ;
                jlo    RCL                   ;
                clr.b  &P1IFG                ;clear port 1 flags
                clr.b  &P2IFG                ;clear port 2 flags
                clr.b  &IFG1                 ;clear flag register 1
                mov    #0A5F0h,&0200h        ;setup ok

                ret                            


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

;-----------------------------------------------------------------
Bytewr    	dint
		mov.b   #08,BITCON            ;写一个字节的数据
                bis.b   #SDA,&P3DIR		;输出
ICWR
		bic.b   #SCL,&P3OUT
		call    #Tdelay
		rlc.b   TRANS
            	jc      ICtr1
            	bic.b   #SDA,&P3OUT
            	jmp     ICtrx
ICtr1   	bis.b   #SDA,&P3OUT
ICtrx      	nop
                call    #Tdelay
            	bis.b   #SCL,&P3OUT
            	call	#Tdelay
                dec.b   BITCON
           	jnz     ICWR
           	nop
           	bic.b   #SCL,&P3OUT
            	bic.b   #SDA,&P3DIR         ; 应答信号 输入
            	call    #Tdelay
	    	bis.b   #SCL,&P3OUT
            	call    #Tdelay
        	bit.b   #SDA,&P3IN
            	jz	ICtr2
            	bis.b   #ERR,PSTAT
ICtr2           bic.b   #SCL,&P3OUT
		bis.b   #SDA,&P3DIR		;输出
		call    #Tdelay
		;eint
            	ret
;----------------------------------------------------------------
Byterd    	dint
		mov.b   #08,BITCON      ;读一个字节数据
		bic.b   #SCL,&P3OUT
		bic.b   #SDA,&P3DIR 	;输入
		call	#Tdelay
ICRD      	bis.b   #SCL,&P3OUT
		call	#Tdelay
            	bit.b   #SDA,&P3IN
            	rlc.b   TRANS
            	bic.b   #SCL,&P3OUT
            	nop
            	call	#Tdelay
            	dec.b   BITCON
            	jnz     ICRD
            	bis.b   #SDA,&P3DIR 	   ;输出
            	call	#Tdelay
            	bis.b   #SDA,&P3OUT      ;应答信号 给一个低电平
            	call	#Tdelay
            	bis.b   #SCL,&P3OUT
            	call	#Tdelay
            	bic.b   #SCL,&P3OUT
            	call	#Tdelay
            	bis.b   #SDA,&P3OUT

⌨️ 快捷键说明

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