认识Keil C例程.docx

上传人:b****7 文档编号:10434355 上传时间:2023-02-11 格式:DOCX 页数:21 大小:18.19KB
下载 相关 举报
认识Keil C例程.docx_第1页
第1页 / 共21页
认识Keil C例程.docx_第2页
第2页 / 共21页
认识Keil C例程.docx_第3页
第3页 / 共21页
认识Keil C例程.docx_第4页
第4页 / 共21页
认识Keil C例程.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

认识Keil C例程.docx

《认识Keil C例程.docx》由会员分享,可在线阅读,更多相关《认识Keil C例程.docx(21页珍藏版)》请在冰豆网上搜索。

认识Keil C例程.docx

认识KeilC例程

认识KeilC

例程:

//实例:

使用P3口流水点亮8位LED

#include//包含单片机寄存器的头文件

/*************************************************************

函数功能:

延时一段时间

*************************************************************/

voiddelay(void)//延时子程序开始

{

unsignedchari,j;

for(i=0;i<250;i++)

for(j=0;j<250;j++)

;//空循环

}//子程序结束

/*************************************************************

函数功能:

主程序

*************************************************************/

voidmain(void)

{

while

(1)

{

P3=0xfe;//11111110第一个灯亮

Delay();//调用延时函数

P3=0xfd;//11111101第二个灯亮

Delay();//调用延时函数

P3=0xfb;//11111011第三个灯亮

Delay();//调用延时函数

P3=0xf7;//11110111第四个灯亮

Delay();//调用延时函数

P3=0xef;//11101111第五个灯亮

Delay();//调用延时函数

P3=0xdf;//11011111第六个灯亮

Delay();//调用延时函数

P3=0xbf;//10111111第七个灯亮

Delay();//调用延时函数

P3=0x7f;//01111111第八个灯亮

Delay();//调用延时函数

}

}

/*通过P1口控制,霹雳灯实验程序:

指针移位法*/

//==声明区============================================

#include//定义51系列单片机引入头文件

#defineLEDP1//定义LED接至P1口

voiddelay(int);//声明延迟函数

/*******************************************************

函数功能:

主程序

*******************************************************/

Voidmain()//主程序开始

{

unsignedchari;//声明无号数字元变数i(占1Bytes)

LED=0xfe;//初值=11111110,只有最右1灯亮

while

(1)//无穷循环,程序一直跑

{

for(i=0;i<7;i++)//左移7次

{

delay(100);//延迟100×5ms=0.5s

LED=(LED<<1)|0x01;//左移1位,并设定最低位元为1

}//左移结束,只有最左1灯亮

for(i=0;i<7;i++)//右移7次

{

delay(100);//延迟1005m=0.5s

LED=(LED>>1)|0x80;//右移1位,并设定最高位元为1

}//结束右移,只有最右1灯亮

}//while循环结束

}//主程序结束

/***********************************************************

函数功能:

延时子程序

***********************************************************/

/*延迟函数,延迟约x5ms*/

voiddelay(intx)//延迟函数开始

{

inti,j;//声明整数变数i,j

for(i=0;i

for(j=0;j<600;j++);//计数600次,延迟5ms

}

/*********************************************************

用不同数据类型控制灯的闪烁时间——P1.0口和P1.4口比较

*********************************************************/

#include//包含单片机寄存器头文件

/*********************************************************

函数功能:

用整形数据延时一段时间

*********************************************************/

Voidint_delay(void)//定义整形数据实现的延时函数

{

Unsignedintm;//定义无符号整形变量,双字节数据,0-65535

For(m=0;m<36000;m++)//循环开始

;//空操作

}

/*********************************************************

函数功能:

用字符型数据延时一段时间

*********************************************************/

Voidchar_delay(void)//定义字符型数据实现的延时函数

{

Unsignedchari,j;//定义无符号字符变量,单字节数据,0-255

for(i=0;i<200;i++)

for(j=0;j<180;j++)

;//空操作

}

/**************************************************************

函数功能:

主函数

**************************************************************/

Voidmain(void)

{

Unsignedchari;

While

(1)

{

For(i=0;i<3;i++)

{

P1=0xfe;//点亮P1.0口的灯

Int_delay();//延时一段较长的时间

P1=0xff;//P1.0口灯熄灭

Int_delay();//延时一段较长时间

}

For(i=0;i<3;i++)

{

P1=0xef;//点亮P1.4口的灯

char_delay();//延时一段较长的时间

P1=0xff;//P1.4口灯熄灭

char_delay();//延时一段较长时间

}

}

}

/***********************************************************************/

#include

#defineucharunsignedchar//这里用"uchar"代替"unsignedchar","uchar"用来定义无符号字符型数。

#defineuintunsignedint//"uint"用来定义无符号整型数。

sbitShow_LED=P1^0;//用来声明P1.0口为程序所要控制的端口,"sbit"是KEIL专门用来声明某位IO口

/********************************************************************

*名称:

Delay()

*功能:

延时,延时时间为10ms*del。

这是通过软件延时,有一定误差。

*输入:

del

*输出:

*这里只单独控制P1.0口,所以定义成:

sbitShow_LED=P1^0;区分大小写

***********************************************************************/

voidDelay(uintdel)

{

uinti,j;

for(i=0;i

for(j=0;j<1827;j++)//这个是通过软件仿真得出的数

;//空循环

}

/********************************************************************

*名称:

Main()

*功能:

实现灯的闪烁

***********************************************************************/

voidMain(void)

{

while

(1)

{

Show_LED=1;//LED1灯亮

Delay(20);//Delay(del)中的数为延时的时间参数,延时时间为10ms*del.

Show_LED=0;//LED1灯灭

Delay(20);//Delay(del)中的数为延时的时间参数,延时时间为10ms*del.

}

}

顺时针流水灯:

用指针移位法

/***********************************************************************/

#include

#defineucharunsignedchar

#defineuintunsignedint

/********************************************************************

*名称:

Delay()

*功能:

延时,延时时间为10ms*del

*输入:

del

*输出:

***********************************************************************/

voidDelay(uintdel)

{

uinti,j;

for(i=0;i

for(j=0;j<1827;j++)

;

}

/********************************************************************

*名称:

Main()

*功能:

实现灯的闪烁

*输入:

*输出:

***********************************************************************/

voidMain(void)

{

uchari,temp;

while

(1)

{

temp=0xfe;

for(i=0;i<8;i++)

{

P1=temp;//把值赋给P1口

Delay(30);//延时(10毫秒*j)秒

temp=temp<<1;//值右移一位

temp=temp|0x01;

}

P1=0xff;

temp=0xfe;

for(i=0;i<4;i++)

{

P2=temp;//把值赋给P2口

Delay(30);//延时(10毫秒*j)秒

temp=temp<<1;//值右移一位

temp=temp|0x01;

}

P2=0xff;

}

}

/***********************************************************************

12个灯实现模拟交通灯

***********************************************************************/

#include

#defineucharunsignedchar

#defineuintunsignedint

//定义北面的LED

sbitN_Red=P1^0;

sbitN_Yellow=P1^1;

sbitN_Green=P1^2;

//定义东面的LED

sbitE_Red=P1^3;

sbitE_Yellow=P1^4;

sbitE_Green=P1^5;

//定义南面的LED

sbitS_Red=P1^6;

sbitS_Yellow=P1^7;

sbitS_Green=P2^0;

//定义西面的LED

sbitW_Red=P2^1;

sbitW_Yellow=P2^2;

sbitW_Green=P2^3;

/********************************************************************

*名称:

Delay()

*功能:

延时,延时时间为10ms*del

*输入:

del

*输出:

***********************************************************************/

voidDelay(uintdel)

{

uinti,j;

for(i=0;i

for(j=0;j<1827;j++)

;

}

/********************************************************************

*名称:

Main()

*功能:

实现灯的闪烁

*输入:

*输出:

***********************************************************************/

voidMain(void)

{

while

(1)

{

/*南北红灯亮、东西绿灯亮、持续时间20秒*/

N_Red=0;

N_Yellow=1;

N_Green=1;

//

E_Red=1;

E_Yellow=1;

E_Green=0;

//

S_Red=0;

S_Yellow=1;

S_Green=1;

//

W_Red=1;

W_Yellow=1;

W_Green=0;

Delay(2000);

//

/*南北红灯亮、东西黄灯亮、持续时间5秒*/

N_Red=0;

N_Yellow=1;

N_Green=1;

//

E_Red=1;

E_Yellow=0;

E_Green=1;

//

S_Red=0;

S_Yellow=1;

S_Green=1;

//

W_Red=1;

W_Yellow=0;

W_Green=1;

Delay(500);

//

/*南北绿灯亮、东西红灯亮、持续时间20秒*/

N_Red=1;

N_Yellow=1;

N_Green=0;

//

E_Red=0;

E_Yellow=1;

E_Green=1;

//

S_Red=1;

S_Yellow=1;

S_Green=0;

//

W_Red=0;

W_Yellow=1;

W_Green=1;

Delay(2000);

/*南北黄灯亮、东西红灯亮、持续时间5秒*/

N_Red=1;

N_Yellow=0;

N_Green=1;

//

E_Red=0;

E_Yellow=1;

E_Green=1;

//

S_Red=1;

S_Yellow=0;

S_Green=1;

//

W_Red=0;

W_Yellow=1;

W_Green=1;

Delay(500);

}

}

/***********************************************************************/

#include

#defineucharunsignedchar

#defineuintunsignedint

/***********************************************************************

*名称:

Delay()

*功能:

延时,延时时间为10ms*del

*输入:

del

*输出:

渐快流水灯

***********************************************************************/

voidDelay(uintdel)

{

uinti,j;

for(i=0;i

for(j=0;j<1827;j++)

;

}

/**********************************************************************

*名称:

Main()

*功能:

实现灯的闪烁

*输入:

*输出:

***********************************************************************/

voidMain(void)

{

uchari,j=20,temp;

while

(1)

{

temp=0x7f;

for(i=0;i<8;i++)

{

P1=temp;//把值赋给P1口

Delay(j);//延时(10毫秒*j)秒

temp=temp>>1;//值右移一位

temp=temp|0x80;

}

P1=0xff;

temp=0xf7;

for(i=0;i<4;i++)

{

P2=temp;//把值赋给P2口

Delay(j);//延时(10毫秒*j)秒

temp=temp>>1;//值右移一位

temp=temp|0x08;

}

P2=0xff;

if(j>6)//这里定义一个延时的最低的值,有了这个,灯的闪烁时间最短为0.06秒

{

j-=2;//每转一圈延时减0.02

}

}

}

●逗号运算符

●格式:

表达式1,表达式2,表达式3…

●例如:

x(y=3,z=5,y+2)

●结果:

z=5,y=3,x=y+2=5

●条件运算符——“?

”:

可以将3个表达式连成一个条件表达式。

形式如下:

●逻辑表达式?

表达式1:

表达式2

●说明:

先计算逻辑表达式,当其值为真(非0)时,表达式1的值为整个表达式的值;当逻辑表达式为假(0)时,将表达式2的值作为整个表达式的值

●例如:

当a=8,b=13时,求a,b中的最大值

●程序如下:

max=(a>b)?

a:

b

●结果:

max=13

●强制转换运算符

●格式:

(类型名)(表达式)

●示例如下:

●(int)a//将a强制转化为整型

●(int)(3.58)//将实型变量3.58强制转化为整型,结果为3

/***********************************************************************/

#include

#defineucharunsignedchar

#defineuintunsignedint

/********************************************************************

*名称:

Delay()

*功能:

延时,延时时间为10ms*del

*输入:

del

*输出:

渐快流水灯闪烁

***********************************************************************/

voidDelay(uintdel)

{

uinti,j;

for(i=0;i

for(j=0;j<1827;j++)

;

}

/********************************************************************

*名称:

Main()

*功能:

实现灯的闪烁

*输入:

*输出:

***********************************************************************/

voidMain(void)

{

uchari,j=20,temp;

while

(1)

{

temp=0x7f;

for(i=0;i<8;i++)

{

P1=temp;//把值赋给P1口

Delay(j);//延时(10毫秒*j)秒

temp=temp>>1;//值右移一位

temp=temp|0x80;

}

P1=0xff;

temp=0xf7;

for(i=0;i<4;i++)

{

P2=temp;//把值赋给P2口

Delay(j);//延时(10毫秒*j)秒

temp=temp>>1;//值右移一位

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1