i2c调试写程序

上传人:子 文档编号:43013608 上传时间:2018-06-04 格式:DOC 页数:8 大小:15.36KB
返回 下载 相关 举报
i2c调试写程序_第1页
第1页 / 共8页
i2c调试写程序_第2页
第2页 / 共8页
i2c调试写程序_第3页
第3页 / 共8页
i2c调试写程序_第4页
第4页 / 共8页
i2c调试写程序_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《i2c调试写程序》由会员分享,可在线阅读,更多相关《i2c调试写程序(8页珍藏版)》请在金锄头文库上搜索。

1、I2CI2C 调试写程序调试写程序;作者:Chaver;功能:I2C 写调试程;修改说明:;V1.0:第一稿;*;$;管脚定义;$INCLUDEMC20P02.asm;p0 口定义K_SETUP define6,P0 ;0K_SWITCH define4,P0 ;0M_UP define3,P0 ;1 outM_DOWN define1,P0 ;1 outLED define 0,P0 ;1 OUT;p1 口定义RecData define 7,P1 ;0 inSDA define6,P1 ;0/1SCL define4,P1 ;0 INK_DOWN define1,P1 ;0;p2 口定义K

2、_UP define1,P2 ;0K_STOP define0,P2 ;0;$;RAM 变量起始地址 $00c0-$00ff;$ORG $00C0IICAddr DS 1IICDataDS 1;I2C dataSendCode DS 1Bit7 DEFINE 7,SendCodeBit0 DEFINE 0,SendCode SendCountDS 1SendLen DS 1FCnt equ$CD;first countSCnt equ$CETCnt equ$CF;=;*;ROM 起始地址;*ORG $1800RESET:SEI;关中断;*;上电清除 RAM 数据;*LDX#$c0;c0 - X

3、CLEAR_RAM:CLR,XINCXBNECLEAR_RAM;*;初始化程序;*LDA #$00 STA P0LDA #$0B ;0000,1011STA DDR0 ; 输入-输出口选择LDA #$00 STA P1LDA #$50 ;0101,0000STA DDR1 ; 输入-输出口选择 LDA #$00 STA P2LDA #$00 ;0000,0000STA DDR2 ; 输入-输出口选择 LDA#$50 ;0101,0000STA P0HCON; 开 p0 上拉电阻LDA#$50STA P1HCON; p1 上拉电阻LDA#$00STA P0LCON; p0 下拉电阻SEIMAIN

4、:;BSET LED ;LDA #50;JSR DelayLongBCLR SCLJSR I2CStartLDA #$A0STA SendCodeJSR I2CWByteLDA #$D1STA SendCodeJSR I2CWByteLDA #$55STA SendCodeJSR I2CWByteLDA #$56STA SendCodeJSR I2CWByteLDA #$57STA SendCodeJSR I2CWByteJSR I2CStop;BCLR LEDLDA #1JSR DelayLongjmp main;*;NAME:;延时程序模块; DelayLong */DelayLong:S

5、TA FCnt D1: LDA #$20 ;D2- C2 F2H MODIFY FOR TouchAction for 1cm ;quick is 0x0E , slow is 0x20STA SCnt ;SCnt:C2-31 Fcpu=Fosc/4D2: LDA #$E2STA TCntD3: DEC TCntBNE D3DEC SCntBNE D2BSET FWDTC ;Clear watchdog timerDEC FCntBNE D1RTS;=;NAME:DelayI2C ;= DelayI2C:LDA #$08STA FCntForI2C:NOPDEC FCnt BNE ForI2C

6、RTS;= ;NAME: DelayLittleI2C;= DelayLittleI2C:LDA #$02STA FCntForLI2C:DEC FCntBNE ForLI2CRTS;/* ; I2C 程序模块 ;/* ;= ;NAME:I2CStart;= I2CStart:LDA #$50 ;0001,0000STA DDR1 ; 输入-输出口选择 NOPBCLR SCL;LOW TO ENABLE CHANGENOPBSET SDA ;ENSURE HIGH before SCL high.JSR DelayI2CBSET SCLJSR DelayI2CBCLR SDA ;finish

7、startJSR DelayI2CBCLR SCL ;low sclJSR DelayI2CRTS;= ;NAME:I2CStop;= I2CStop:LDA #$50 ;0001,0000STA DDR1 ; 输入-输出口选择 BCLR SDA ;ENSURE LOW before SCL high.JSR DelayI2CBSET SCLJSR DelayI2CBSET SDA ;finish startJSR DelayI2CBCLR SCL ;low sclJSR DelayI2CRTS;= ;NAME: I2CWByte;FUNCTION: Write One Byte To E2P

8、ROM;= I2CWByte: LDA #$50 ;0001,0000STA DDR1 ; 输入-输出口选择 LDA #$08STA SendCountWR0:BRCLR Bit7,WR1BSET SDAJMP WR2WR1:BCLR SDA WR2:JSR DelayI2CBSET SCL JSR DelayI2CROL SendCodeBCLR SCLDEC SendCountBNE WR0LDA #$10 ;0001,0000STA DDR1 ; 输入-输出口选择 NOPBSET SCLWR3:BRCLR SDA,Wback ;wait for ACK from e2promJMP WR3Wback:BCLR SCLJSR DelayI2CRTS

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号