- char ii; uchar jj;
- void send(uchar data)
- {
- for (ii=7;ii>=0;ii--)
- {
- //scl=0;
- //aa();
- jj=(data>>ii);
- //sda=(j&0x01);
- //aa();
- //scl=1;
- //aa();
- //aa();
- }
复制代码
一个子程序 ,注释掉的内容是为了调试方便画掉的 。
data传来的数据位A0,通过单步运行看到,没有错误,但是在第一次循环时,jj=(data>>ii);后 ,jj成了1A ,后面再循环也是1A。
ii跟jj本来是send内定义了,后来会怕这出问题,换成了全局变量定义,结果也不对 。开始ii jj在 send函数内定义时 ,循环时jj为18,而且每次循环都是这个值。
编译器为MPLAB IDE v8.46和 PICC8.05,仿真器ICD2,单片机为PIC16F877A。
而且上面的程序我在VC了试过了,没有问题 。谢谢各位了
此帖出自
小平头技术问答
- void send(uchar data)
- {
- uchar i;
- for (i = 0; i < 8; i++)
- {
- scl = 0;
- if (data & 0x80)
- {
- sda = 1;
- }
- else
- {
- sda = 0;
- }
- scl = 1;
- data <<= 1;
- }
- }
-
复制代码PS,5楼,我需要高位到低位传送
一周热门 更多>