端口操作求助
用的是PIC16F876,操作端口RA3跟RA2,先让RA2端口输出高电平(可以正常输出),然后再接着让RA3输出高电平(可以输正常出),但这时候RA2变成低电平了。。。各位大侠这是什么原因??有没有遇到的???求助,感谢~~~~ 用了位操作指令?看看编出来汇编指令,是否变成了读-写操作。
你可能觉得你只操作了RA3,可是指令可能是操作了整个RA端口。 操作的是PORT还是LAT寄存器? mayahs2369 发表于 2013-10-25 08:42 static/image/common/back.gif
操作的是PORT还是LAT寄存器?
这个系列没有LAT寄存器 lusson 发表于 2013-10-25 08:25 static/image/common/back.gif
用了位操作指令?
看看编出来汇编指令,是否变成了读-写操作。
#define SCL PORTAbits.RA3
#define SDA PORTAbits.RA2
汇编:
void Start_I2c(void)
21: {
22: SDA=1; /*发送起始条件的数据信号*/
23: __delay_ms(3);
0713 3014 MOVLW 0x14
0714 00F2 MOVWF 0x72
0715 3079 MOVLW 0x79
0716 00F1 MOVWF 0x71
0717 0BF1 DECFSZ 0x71, F
0718 2F17 GOTO 0x717
0719 0BF2 DECFSZ 0x72, F
071A 2F17 GOTO 0x717
071B 2F1C GOTO 0x71c
24: SCL=1;
071C 1283 BCF 0x3, 0x5
071D 1303 BCF 0x3, 0x6
071E 1585 BSF 0x5, 0x3
25: __delay_ms(10); /*起始条件建立时间大于4.7us,延时*/
071F 3041 MOVLW 0x41
0720 00F2 MOVWF 0x72
0721 30EE MOVLW 0xee
0722 00F1 MOVWF 0x71
0723 0BF1 DECFSZ 0x71, F
0724 2F23 GOTO 0x723
0725 0BF2 DECFSZ 0x72, F
0726 2F23 GOTO 0x723
0727 0064 CLRWDT
26: SDA=0; /*发送起始信号*/
0728 1283 BCF 0x3, 0x5
0729 1303 BCF 0x3, 0x6
072A 1105 BCF 0x5, 0x2
27: __delay_ms(10); /* 起始条件锁定时间大于4μs*/
072B 3041 MOVLW 0x41
072C 00F2 MOVWF 0x72
072D 30EE MOVLW 0xee
072E 00F1 MOVWF 0x71
072F 0BF1 DECFSZ 0x71, F
0730 2F2F GOTO 0x72f
0731 0BF2 DECFSZ 0x72, F
0732 2F2F GOTO 0x72f
0733 0064 CLRWDT
28: SCL=0; /*钳住I2C总线,准备发送或接收数据 */
0734 1283 BCF 0x3, 0x5
0735 1303 BCF 0x3, 0x6
0736 1185 BCF 0x5, 0x3
29: __delay_us(3);
0737 3004 MOVLW 0x4
0738 00F1 MOVWF 0x71
0739 0BF1 DECFSZ 0x71, F
073A 2F39 GOTO 0x739
073B 2F3C GOTO 0x73c
30: }
073C 0008 RETURN
汇编没太看懂,请大侠帮看一下,谢谢~~~ ADcon0?
ADcon1?
Ansel? jlian168 发表于 2013-10-25 09:36 static/image/common/back.gif
ADcon0?
ADcon1?
Ansel?
没有ANSEL寄存器。
没用AD也必须得配置ADCON? In adcon1 to set A/D pin to use. yueliangz0123 发表于 2013-10-25 09:29 static/image/common/back.gif
#define SCL PORTAbits.RA3
#define SDA PORTAbits.RA2
没看懂就对着汇编指令一条条看。。
我也没空看
另外 像I2C这类,也要考虑会被外部拉低。 很象PIC单片机常见的 读-改写-写 的问题,楼主的RA2口可能被外部拉低了 结贴~~~ADCON1不用AD也要设置
页:
[1]