请教一个PIC单片机的问题,

2019-03-25 19:47发布

  1. char ii; uchar jj;

  2. void send(uchar data)
  3. {
  4. for (ii=7;ii>=0;ii--)
  5. {
  6. //scl=0;
  7. //aa();
  8. jj=(data>>ii);
  9. //sda=(j&0x01);
  10. //aa();
  11. //scl=1;
  12. //aa();
  13. //aa();
  14. }
复制代码
一个子程序 ,注释掉的内容是为了调试方便画掉的 。
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了试过了,没有问题 。谢谢各位了

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
zhangle8311
1楼-- · 2019-03-26 22:01

  1. void send(uchar data)
  2. {
  3. uchar i;
  4. for (i = 0; i < 8; i++)
  5. {
  6. scl = 0;
  7. if (data & 0x80)
  8. {
  9. sda = 1;
  10. }
  11. else
  12. {
  13. sda = 0;
  14. }
  15. scl = 1;
  16. data <<= 1;
  17. }
  18. }

复制代码
PS,5楼,我需要高位到低位传送

一周热门 更多>