导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→串行口再次发送!![149014251]

 *第37155篇: 串行口再次发送!!

  
楼 主:149014251 2006年1月13日13:31
 串行口再次发送!!
#include "reg51.h"
#define uchar unsigned char 
#define uint unsigned int 
sbit SDA=P2^7;  
sbit SCL=P2^6; 
unsigned char tempj;

unsigned char bdata dd;

sbit  LED1 = dd^0; //数据的位,达到控制164的位
sbit  LED2 = dd^1;
sbit  LED3 = dd^2;
sbit  LED4 = dd^3;
sbit  LED5 = dd^4;
sbit  LED6 = dd^5;
sbit  LED7 = dd^6;
sbit  LED8 = dd^7;

void CtrlHandle(void)//送8位串行数据,只送i/o口
{
 
 for(tempj=0;tempj  <8;tempj++)
    {
  if((dd&0x80)==0x80) SDA=1;
  else SDA=0;
     SCL=0;
     dd  <  <=1;
     SCL=1;
     }

}


main()
{
LED1=1;
LED2=0;
LED3=1;
LED4=1;
LED5 =1;
LED6 =0;
LED7 =1;
LED8 =0;


while(1)
 {
CtrlHandle();
 }

}
以上我是用最简单的方式来检查cpu能实现对164的控制
请问:
稳定后,164(QH~QA为多少,是否1011101)???
我用快速接触法,发现SDA一直都为0,当接其他口,下来LED也不亮??
请问DX,是不是我的程序有问题啊???

  
2楼:149014251 2006年1月15日17:32
 难道无人知道吗?
自项!!
  
3楼:lenglianxi 2006年1月16日11:55
 那不全0还咋的
main()
{

while(1)
 {
CtrlHandle(); // 这个子程序执行一次后dd就变成0了,之后当然每次都输出0
 }

}
这样改如何?
void CtrlHandle(void)//送8位串行数据,只送i/o口
{
 code char mask[]={128,64,32,16,8,4,2,1};
 unsigned char i;
 for(i=0; i  <8; i++)
 {
  SDA = dd & mask[i] ? 1 : 0;
  SCL = 1;
  SCL = 0;
 }
  
}



>>>>>>对该主题发表你的看法

本主题贴数3,分页: [第1页]


[上一篇主题]:我的一输入法要移到51下,有做51输入法的朋友吗?

[下一篇主题]:从焊接开始引导你进入ARM板丰富资源的开发世界