中科因仑“3+1”工程特种兵精英论坛

标题: 041、数据串转并程序 [打印本页]

作者: 张衍波    时间: 2015-4-20 16:40
标题: 041、数据串转并程序
/********************************************************************
                            汇诚科技
网址:http://www.ourhc.cn
产品有售淘宝店:http://shop36330473.taobao.com   
*********************************************************************/
#include<reg52.h>          //头文件
#define uint unsigned int   //定义整型类型
#define uchar unsigned char        //定义字符类型
sbit DAT=P1^1; //定义串行数据输出口
sbit CLK=P1^2; //定义时钟控制输出口
uchar code tab[]= {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//定义输出数组
/********************************************************************
                              串行输出函数  
*********************************************************************/
void sendbyte(uchar byte)
{   
uchar num,c;  //定义两个变量
num=tab[byte];//输出数据
for(c=0;c<8;c++)//循环8次
{
CLK=0;                    //时钟置低
DAT=num&0x01;        //输出电平
CLK=1;                    //时钟置低
num>>=1;                //num右移一位
}
}
/********************************************************************
                              延时函数  
*********************************************************************/
void delay_50ms(unsigned int t)//延时函数
{
unsigned int j;   
for(;t>0;t--)
for(j=6245;j>0;j--)
{;}
}
/********************************************************************
                              主函数  
*********************************************************************/
void main()        //主函数
{
uchar h; //定义字符变量
while(1) //无限循环
{
for(h=0;h<8;h++) //循环h次
        {
         delay_50ms(1);//延时
     sendbyte(h);  //调用函数
     delay_50ms(10);//延时
        }
   h=0;        //清零
}

}
/********************************************************************
                              结束  
*********************************************************************/[attach]2375[/attach]






欢迎光临 中科因仑“3+1”工程特种兵精英论坛 (http://bbs.enlern.com/) Powered by Discuz! X3.4