C语言单片机等待询问_51单片机编程实例大全(下部)

学习单片机

6b39b1c4f74e5c1de2b4ded36ee40092.png

// 实例 1:用单片机控制第一个灯亮

#include //包含 51单片机寄存器定义的头文件void main(void)

{ P1=0xfe; //P1=1111 1110B,即 P1.0输出低电平

}

// 实例 2:用单片机控制一个灯闪烁:认识单片机的工作频率

#include //包含单片机寄存器的头文件/ 函数功能:延时一段时间

/ void delay(void) //两个 void 意思分别为无需返回值,没有参数传递{

unsigned int i; // 定义无符号整数,最大取值范围 65535 for(i=0;i<20000;i++) // 做 20000次空循环

; //什么也不做,等待一个机器周期} / 函数功能:主函数 (C语言规定必须有也只能有 1个主函数)

/ void main(void) {

while(1) //无限循环{

P1=0xfe; //P1=1111 1110B, P1.0输出低电平delay(); //延时一段时间P1=0xff; //P1=1111 1111B, P1.0输出高电平delay(); //延时一段时间

} }

// 实例 3:将 P1 口状态分别送入 P0、P2、P3 口:认识 I/O 口

的引脚功能

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

/ 函数功能:主函数 (C语言规定必须有也只能有 1个主函数)

/

void main(void) {

while(1) //无限循环{

P1=0xff; // P1=1111 1111B,熄灭 LED P0=P1; // 将 P1口状态送入 P0口P2=P1; // 将 P1口状态送入 P2口

P3=P1; // 将 P1口状态送入 P3口}

}

// 实例 4:使用 P3 口流水点亮 8 位 LED

#include //包含单片机寄存器的头文件/ 函数功能:延时一段时间

/

void delay(void) {

unsigned char i,j; for(i=0;i<250;i++)

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

} / 函数功能:主函数

/ void main(void) {

while(1) {

P3=0xfe; //第一个灯亮delay(); //调用延时函数P3=0xfd; //第二个灯亮delay(); //调用延时函数P3=0xfb; //第三个灯亮delay(); //调用延时函数

P3=0xf7; //第四个灯亮delay(); //调用延时函数P3=0xef; //第五个灯亮

delay(); //调用延时函数P3=0xdf; //第六个灯亮delay(); //调用延时函数P3=0xbf; //第七个灯亮

delay(); //调用延时函数P3=0x7f; //第八个灯亮

delay(); //调用延时函数}

}

//实例 7:通过对 P3口地址的操作流水点亮 8位 LED #include //包含单片机寄存器的头文件sfr x=0xb0; //P3 口在存储器中的地址是 b0H, 通过 sfr 可定义 8051内核单片机

//的所有内部 8位特殊功能寄存器 ,对地址 x的操作也就是对 P1口的操作/ 函数功能:延时一段时间

/ void delay(void)

{ unsigned char i,j; for(i=0;i<250;i++)

for(j=0;j<250;j++) ; //利用循环等待若干机器周期,从而延时一段时间

} / 函数功能:主函数

/ void main(void) {

while(1) {

x=0xfe; //第一个灯亮delay(); // 调用延时函数x=0xfd; //第二个灯亮

delay(); // 调用延时函数x=0xfb; //第三个灯亮

delay(); // 调用延时函数x=0xf7; //第四个灯亮

delay(); // 调用延时函数x=0xef; //第五个灯亮

delay(); //调用延时函数x=0xdf; //第六个灯亮delay(); //调用延时函数x=0xbf; //第七个灯亮

delay(); //调用延时函数x=0x7f; //第八个灯亮

delay(); //调用延时函数}

}

//实例 8:用不同数据类型控制灯闪烁时间#include //包含单片机寄存器的头文件/ 函数功能:用整形数据延时一段时间

/ void int_delay(void) //延时一段较长的时间{

unsigned int m; // 定义无符号整形变量,双字节数据,值域为 0~65535 for(m=0;m<36000;m++)

; //空操作} / 函数功能:用字符型数据延时一段时间

/ void char_delay(void) //延时一段较短的时间{

unsigned char i,j; //定义无符号字符型变量,单字节数据,值域 0~255 for(i=0;i<200;i++)

for(j=0;j<180;j++) ; //空操作

} / 函数功能:主函数

/ void main(void) {

unsigned char i; while(1)

{ for(i=0;i<3;i++)

{

P1=0xfe; //P1.0 口的灯点亮int_delay(); //延时一段较长的时间P1=0xff; //熄灭int_delay(); //延时一段较长的时间

} for(i=0;i<3;i++)

{ P1=0xef; //P1.4 口的灯点亮char_delay(); //延时一段较长的时间P1=0xff; //熄灭char_delay(); //延时一段较长的时间

}

}

}

// 实例 9:用 P0 口、 P1 口分别显示加法和减法运算结果

#include void main(void) {

unsigned char m,n; m=43; //即十进制数 2x16+11=43 n=60; //即十进制数 3x16+12=60 P1=m+n; //P1=103=0110 0111B,结果 P1.3、P1.4、P1.7 口的灯被点亮P0=n-m; //P0=17=0001 0001B,结果 P0.0、P0.4的灯被熄灭

}

// 实例 10:用 P0、P1 口显示乘法运算结果

#include //包含单片机寄存器的头文件void main(void) {

unsigned char m,n; unsigned int s; m=64;

n=71; s=m n; //s=64 71=4544,需要 16位二进制数表示,高 8位送 P1口,低 8

位送 P0口//由于 4544=17 256+192=H3 16 16 16+H2 16 16+H1 16+H0

//两边同除以 256,可得 17+192/256=H3 16+H2+(H1 16+H0)/256

//因此,高 8位 16进制数 H3 16+H2必然等于 17,即 4544除以 256的商

//低 8位 16进制数 H1 16+H0必然等于 192,即 4544除以 256的余数

P1=s/256; //高 8位送 P1口 ,P1=17=11H=0001 0001B, P1.0和 P1.4口灭,其余亮

P0=s%256; //低 8位送 P0口 , P3=192=c0H=1100 0000B,P3.1,P3.6,P3.7口灭,其余亮}

// 实例 11:用 P1、P0 口显示除法运算结果

#include //包含单片机寄存器的头文件void main(void) {

P1=36/5; //求整数P0=((36%5) 10)/5; //求小数while(1)

; //无限循环防止程序"跑飞"}

// 实例 12:用自增运算控制 P0 口 8 位 LED 流水花样

#include //包含单片机寄存器的头文件/ 函数功能:延时一段时间

/ void delay(void) {

unsigned int i; for(i=0;i<20000;i++)

; } / 函数功能

/ void main(void) {

unsigned char i; for(i=0;i<255;i++) //注意 i 的值不能超过 255 {

P0=i; //将 i的值送 P0口delay(); //调用延时函数

} }

// 实例 13:用 P0 口显示逻辑 "与"运算结果

#include //包含单片机寄存器的头文件void main(void) {

P0=(4>0)&&(9>0xab);//将逻辑运算结果送 P0口while(1)

; //设置无限循环,防止程序"跑飞"}

// 实例 14:用 P0 口显示条件运算结果

#include //包含单片机寄存器的头文件void main(void) {

P0=(8>4)?8:4;//将条件运算结果送 P0口,P0=8=0000 1000B while(1)

; //设置无限循环,防止程序"跑飞"}

// 实例 15:用 P0 口显示按位 "异或 "运算结果

#include //包含单片机寄存器的头文件void main(void) {

P0=0xa2^0x3c;// 将条件运算结果送 P0口,P0=8=0000 1000B while(1)

; //设置无限循环,防止程序"跑飞"}

// 实例 16:用 P0 显示左移运算结果

#include //包含单片机寄存器的头文件void main(void) {

P0=0x3b<<2;//将左移运算结果送 P0口,P0=1110 1100B=0xec while(1)

; //无限循环,防止程序"跑飞"}

// 实例 17:"万能逻辑电路 "实验

#include //包含单片机寄存器的头文件sbit F=P1^4; //将 F位定义为 P1.4 sbit X=P1^5; //将 X位定义为 P1.5 sbit Y=P1^6; //将 Y位定义为 P1.6 sbit Z=P1^7; //将 Z位定义为 P1.7 void main(void) {

while(1) {

F=

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值