抄来的:
成都创新互联是专业的临朐网站建设公司,临朐接单;提供成都做网站、成都网站制作,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行临朐网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
/*******************************************************
* 程序名称:jiance.c
* 程序功能:传感器检测到目标物,输出高电平
* 程序作者:
* 创建时间:
* 修改时间:
* 程序版本:V0.1
******************************************************/
/*
* 包含头文件
*/
#include "inc/hc595.h"
#include "reg51.h"
/*
* 定义引脚
*/
/* 时钟信号线引脚定义 */
sbit HC595CLK = P0^5;
/* 片选信号线引脚定义 */
sbit HC595RCK = P0^6;
/* 数据输入引脚定义 */
sbit HC595DATA = P0^7;
/******************************************************
* 函数名称:SendData
* 函数功能:74HC595数据的发送
* 入口参数:unsigned int uiDataOne, unsigned int uiDataTwo
* 出口参数:void
*******************************************************/
void SendData(unsigned int uiDataOne, unsigned int uiDataTwo)
{
unsigned int i = 0;
/* 将片选信号置为低电平 */
HC595RCK = 0;
/* 输入第一个数据:uiDataOne */
for (i = 0; i 8; i++)
{
/* 给出脉冲信号,首先将CLK置为0 */
HC595CLK = 0;
if (0 != (uiDataOne 0x80))
{
HC595DATA = 1;
}
else
{
HC595DATA = 0;
}
/* 给出脉冲信号,首先将CLK置为1 */
HC595CLK = 1;
/* 准备第二个数据 */
uiDataOne = uiDataOne 1;
}
/* 输入第二个数据:uiDataTwo */
for (i = 0; i 8; i++)
{
/* 给出脉冲信号,首先将CLK置为0 */
HC595CLK = 0;
if (0 != (uiDataTwo 0x80))
{
HC595DATA = 1;
}
else
{
HC595DATA = 0;
}
/* 给出脉冲信号,首先将CLK置为1 */
HC595CLK = 1;
/* 准备第二个数据 */
uiDataTwo = uiDataTwo 1;
}
/* 将片选信号置为高电平 */
HC595RCK = 1;
}
你没说是什么单片机,看题目就是要做精准延时,你拿计时器中断做就好了,根据时钟频率11.0592MHZ,及你需要延迟的时间,算初值。
在中断函数里将p2.7赋值0或者1。
关于中断怎么写,书本上都有现成代码,你照着改。
void output_high(void)
{
/*具体如何输出高电平,要结合实际情况,如硬件环境*/
}
void output_low(void)
{
/*具体如何输出低电平,要结合实际情况,如硬件环境*/
}
void main(void)
{
unsigned char data=222;//11011110,举例
unsigned char temp=0;
unsigned int i=0;
for(i=0;i8;i++)
{
temp=data1;
if(temp==0)
output_low();
else
output_high();
data=data1;
delay();//延时函数,举例
}
}
假设定时器不溢出,P1.0为高电平输入引脚:
while(P1^0==1);//等待眼前的高电平过去
while(P1^0==0);//等待下一个高电平来到
TR0=1;//启动定时器
while(P1^0==1);//等待高电平结束
TR0=0;//关闭定时器
HIGH=TL0+TH0*256;//读取时间
我通常是这么写:
比如我要点亮LED,假定是共阴极LED。我定义sbit
led1=P0^1;
sbit
led2=P0^2;
然后在应用程序中,led1=1;//这时单片机输出高电平,led1亮
led1=0;//单片机输出低电平,led1不亮
很简单吧!
我是做单片机开发的,有什么问题,我们再交流。
sbit P1.0=P1^0;//P1.0声明
P1.0=1;//输出高电平
P1.0=0;//输出低电平