English
繁体中文
设为首页
加入收藏
当前位置:技术文章首页 >> 单片机 >> test24C256.S43

test24C256.S43--liyilulihua

2008-03-07 21:30:08  作者:liyilulihua  来源:中国电路图纸网  浏览次数:63  文字大小:【】【】【
简介:430单片机驱动EEPROM
关键字:msp430,24c256
;IIC器件的测试程序 ;使用器件为24C01 ;硬件连接为SCL=P1.4,SDA=P1.5 #include "msp430x14x.h" RXTXI2C equ 202h DataConv equ 203h ADDRI2C1 equ 204h ADDRI2C0 EQU 205H DATAI2C equ 206h BITI2C equ 207h ScndBlck equ 208h STARPAGEI2C EQU 220H Pagecount EQU 20AH #define BitCnt R5 SDA equ 020h SCL equ 010h Code equ 0A2h Bitime_5 equ 0064 Bitime equ 0128 Delta equ 150 RXD set 004h TXD set 002h LF equ 0ah CR equ 0dh R_I2C EQU 210H ;****************************************************************************** RSEG CSTACK ; System stack DS 0 ;----------------------------------------------------------------------------- RSEG CODE ; Program code; Reset mov.w #300h,SP llll mov.b #0x00,&P2SEL mov.b #0xff,&P2DIR mov.b #BIT3,&P2OUT ;P2SEL = 0x00; // p2选择 I/O功能 ;P2DIR = 0xff; //置p2口为输出 ;P2OUT ^= BIT3; jmp llll MAIN MOV.B r7, ADDRI2C0 ;要写入的器件内部地址 MOV.B r6, ADDRI2C1 MOV.B r8, DATAI2C ;要写入的具体数据 CALL #Write_I2C ; MOV #01FFFH,R15 DLY0 DEC R15 JNZ DLY0 ;延时,等待写周期的结束 MOV.B r7,ADDRI2C0 MOV.B r6,ADDRI2C1 CALL #Read_I2C ;读出刚写入的数据 mov.b R_I2C,r9 JMP MAIN I2CDLY NOP ;延时 NOP NOP NOP NOP NOP RET Wrpage_I2C mov.b #Code,RXTXI2C ; 页写 add.b #0,RXTXI2C ; call #I2C_Start mov.b ADDRI2C1,RXTXI2C call #I2C_TX mov.b ADDRI2C0,RXTXI2C call #I2C_TX mov.b #64,Pagecount mov.b #0,r15 Wrpage mov.b STARPAGEI2C(R15),RXTXI2C call #I2C_TX INC R15 DEC.B Pagecount jnz Wrpage call #I2C_Stop ret Read_I2C mov.b #Code,RXTXI2C ; 在具体的IIC器件中读某一个地址的数据 add.b #0,RXTXI2C ; call #I2C_Start mov.b ADDRI2C1,RXTXI2C call #I2C_TX mov.b ADDRI2C0,RXTXI2C call #I2C_TX mov.b #Code,RXTXI2C add.b #1,RXTXI2C bis.b #01h,RXTXI2C call #I2C_Start call #I2C_Read call #I2C_Stop ret ;------------------------------------------------------------------------------- I2C_Start bic.b #SCL+SDA,&P1OUT ; 启动总线 bis.b #SDA,&P1OUT bis.b #SCL,&P1OUT CALL #I2CDLY ;------------------------------------------------------------------------------- I2C_TX mov.b #08,BITI2C ; 向总线发送一个字节的数据 I2C_Send rla.b RXTXI2C jc I2C_Send1 I2C_Send0 bis.b #SDA,&P1OUT jmp I2C_Sx I2C_Send1 bic.b #SDA,&P1OUT I2C_Sx bic.b #SCL,&P1OUT nop CALL #I2CDLY nop bis.b #SCL,&P1OUT dec.b BITI2C jnz I2C_Send bic.b #SDA,&P1OUT ;------------------------------------------------------------------------------- I2C_Ackn bic.b #SCL,&P1OUT ; 应答信号 nop CALL #I2CDLY nop bis.b #SCL,&P1OUT ret ;------------------------------------------------------------------------------- I2C_Read mov.b #08,BITI2C ;从总线读一个字节数据 I2C_RX bic.b #SCL,&P1OUT bit.b #SDA,&P1IN rlc.b R_I2C bis.b #SCL,&P1OUT dec.b BITI2C CALL #I2CDLY jnz I2C_RX jmp I2C_Ackn ;------------------------------------------------------------------------------- I2C_Stop bis.b #SDA,&P1OUT ;停止总线 bic.b #SCL,&P1OUT bic.b #SDA,&P1OUT I2C_End ret ;------------------------------------------------------------------------------- Write_I2C mov.b #Code,RXTXI2C ; 向某一个IIC器件的某一地址写入具体的数据 add.b #0,RXTXI2C call #I2C_Start mov.b ADDRI2C1,RXTXI2C ; 高地址 call #I2C_TX mov.b ADDRI2C0,RXTXI2C ; 低地址 call #I2C_TX mov.b DATAI2C,RXTXI2C ; 数据 call #I2C_TX call #I2C_Stop ret ;---------------------------------- COMMON INTVEC ; Interrupt vectors ORG RESET_VECTOR DW Reset ;---------------------------------------------------- END

责任编辑:xyx


相关文章
 

最新文章

更多

· test24C256.S43
· ARM基础知识连载之五(转贴)
· ARM基础知识连载之六(转贴)
· ARM基础知识连载之七(转贴)
· ARM基础知识连载之八(转贴)
· ARM基础知识连载之九(转贴)
· ARM基础知识连载之十(转贴)
· FLASH地址线接线原理及设...
· [转]44B0之bootloader理解
· [转帖]关于ARM启动的一篇...

推荐文章

更多

· test24C256.S43
· ARM基础知识连载之五(转贴)
· ARM基础知识连载之六(转贴)
· ARM基础知识连载之七(转贴)
· ARM基础知识连载之八(转贴)
· ARM基础知识连载之九(转贴)
· ARM基础知识连载之十(转贴)
· FLASH地址线接线原理及设...
· [转]44B0之bootloader理解
· [转帖]关于ARM启动的一篇...

热点文章

更多