作者ksmrt0123 (ksmrt)
看板ASM
标题Re: [问题] PORT脚一直变更~要如何定义(C)
时间Tue Nov 8 14:46:20 2011
把读写sda的指令(如 pSDA = 1; )改成下列两个 functions,
如此只要设定 mask 即可access不同的sda.
这个程式只做到 8-bit (P0), 要做到24-bit (P0-P2)需再扩充但应该不难.
unsigned char sda_mask = 0x01; // p0.0
unsigned char p0_out = 0xFF;
void set_sda(bit b)
{
if(b) p0_out |= sda_mask;
else p0_out &= ~sda_mask;
P0 = p0_out;
}
bit get_sda(void)
{
return(P0&sda_mask? 1: 0);
}
※ 引述《fmdjyl (小D(滴))》之铭言:
: 用i2c写sda和scl
: 今天用一堆ic要被控制~SCL全部都为同一只.
: 但sda会从p0.0~ p2.7 (共24 pin)
: 又因不变动SDA动作的程式~~
: 如
: ===============================
: void main(void)
: {
: while(1)
: {
: //该如何定义~才可以让我的pSDA随我所定义的port动作?
: I2cStart();
: }
: }
: void I2cStart(void)
: {
: pSDA=1;
: pSCL=1;
: I2cWait( );
: pSDA=0;
: I2cWait( );
: pSCL=0;
: I2cWait( );
: }
: ============================
: 我想执行pSDA前~是会是我所定义的port脚~请问该如何定义呢??
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 27.105.12.215
1F:→ ksmrt0123:这有点问题... 不能直接用P0 11/08 14:50
修正一下, 多了一个 p0_out 变数
※ 编辑: ksmrt0123 来自: 27.105.12.215 (11/08 14:52)
2F:推 WolfLord:我很忙,你不要丢出这种搔痒的引诱我写更复杂的 >"< 11/08 14:52
3F:→ ksmrt0123:W大加油~ ^^ 11/08 14:53
4F:→ fmdjyl:K大谢谢您的注解~~我再想想还有无其他方式~~ ^^ 11/08 15:02