接收串行数据

2019-07-15 21:49发布

由图所示,第一个脉冲唤醒作用,后面8个脉冲下降沿时发送数据。 我现在要写个程序来接收这串数据,用51单片机的INT0中断, 第一个唤醒脉冲的下降沿触发中断,进入中断后,在每个时间下降沿时读取数据口的电平。 程序如下:(i注:P3_2就是CLK,music_data就是DATA。
           static uchar temp;
        uint rec_data_delay;
         uchar i=0;         
         EX0=0;
         rec_data_delay=0;
         P3_2=1;
         do
         {
                 rec_data_delay++;
         }
         while((!P3_2)&&(rec_data_delay<65000));
         
         for(i=0;i<8;i++)
          {
                  temp<<=1;
                rec_data_delay=0;
                P3_2=1;
                do
                {
                        rec_data_delay++;
                }
                   while((P3_2)&&(rec_data_delay<3000));
                music_data=1;
                   if(music_data)
                        temp|=0x01;
               
                rec_data_delay=0;
                P3_2=1;
                do
                {
                        rec_data_delay++;
                }
                   while((!P3_2)&&(rec_data_delay<3000));
          }
         num=temp;
         EX0=1;

以上的程序接收不到正确的数据,全是0,不知道确在哪?有没有人指点一下? 非常感谢
QQ截图20131105215032.jpg
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
horsewater
1楼-- · 2019-07-15 23:57
对了,P3_2就是51的INT0管脚
za1052443609
2楼-- · 2019-07-16 01:41
谢谢,楼主分享!
horsewater
3楼-- · 2019-07-16 04:46
怎么没人指点一下呀
13618295759
4楼-- · 2019-07-16 09:32
你中断触发方式设置是对的?
林慕松
5楼-- · 2019-07-16 12:59
 精彩回答 2  元偷偷看……
horsewater
6楼-- · 2019-07-16 15:49
是对的,每次发数据过来时,都有接收到时, 但我把这接收的数发到电脑上来看, 全是0

一周热门 更多>