资源预览内容
第1页 / 共13页
第2页 / 共13页
第3页 / 共13页
第4页 / 共13页
第5页 / 共13页
第6页 / 共13页
第7页 / 共13页
第8页 / 共13页
第9页 / 共13页
第10页 / 共13页
亲,该文档总共13页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
用位操作和总线操作两种方法完成以下题目1. 熟练建立KEIL工程2. 点亮第一个发光管.#includesbit D1=P10;void main()D1=0;#includevoid main ()P1=0xfe;2.8个发光管由上至下间隔1s流动,其中每个管亮500ms,灭500ms,亮时蜂鸣器响,灭时关闭蜂鸣器,一直重复下去。#include #include#define uint unsigned int#define uchar unsigned charsbit beep=P26;uchar temp;void delay();void main() temp=0xfe;while(1) P1=temp;temp=_crol_(temp,1);beep=0;delay();beep=1; void delay()uint x,y;for(x=500;x0;x-)for(y=110;y0;y-);3.8个发光管来回流动,第个管亮100ms,流动时让蜂鸣器发出“滴滴”声。#include #include#define uint unsigned int#define uchar unsigned charsbit beep=P26;uchar temp;void delay();void main() while(1)uint i;temp=0xfe; for(i=1;i8;i+) beep=0;P1=temp;delay(); beep=1; temp=_crol_(temp,1); for(i=1;i0;x-)for(y=110;y0;y-);4,用8个发光管演示出8位二进制数累加过程。#include /52单片机头文件#include /包含有左右循环移位子函数的库#define uint unsigned int /宏定义#define uchar unsigned char /宏定义void delay(uint z) /延时函数,z的取值为这个函数的延时ms数,如delay(200);大约延时200ms. /delay(500);大约延时500ms. uint x,y; for(x=z;x0;x-) for(y=110;y0;y-); void main() /主函数 uchar a; while(1) /大循环 a+; P1=a; delay(1000); 5.8个发光管间隔200ms由上至下,再由下至上,再重复一次,然后全部熄灭再以300ms间隔全部闪烁5次。重复此过程。#include#include#define uint unsigned int#define uchar unsigned charvoid delay(uint);uchar temp;void main() while(1) uint j; for(j=0;j2;j+) uint i;temp=0xfe;for(i=1;i8;i+) P1=temp; delay(200);temp=_crol_(temp,1);for(i=1;i8;i+) P1=temp;delay(200);temp=_cror_(temp,1);for(j=0;j0;i-)for(j=k;j0;j-);3. 间隔300ms第一次一个管亮流动一次,第二次两个管亮流动,依次到8个管亮,然后重复整个过程。#include#include#define uint unsigned int#define uchar unsigned charuchar temp;void delay();void main()uint i,j;while(1)temp=0xfe;for(j=0;j8;j+)for(i=0;i8-j;i+)P1=temp;delay();temp=_crol_(temp,1);temp=_crol_(temp,j);P1=0xff;temp=temp0;i-)for(j=110;j0;j-);4. 间隔300ms先奇数亮再偶数亮,循环三次;一个灯上下循环三次;两个分别从两边往中间流动三次;再从中间往两边流动三次;8个全部闪烁3次;关闭发光管,程序停止。#include#include#define uint unsigned int#define uchar unsigned charvoid delay();uchar temp;void main() uint i; uint j; for(i=0;i3;i+) P1=0x55;delay();P1=0xaa;delay();for(i=0;i3;i+)temp=0xfe;for(j=0;j7;j+)P1=temp; delay();temp=_crol_(temp,1);for(j=0;j7;j+)P1=temp;delay();temp=_cror_(temp,1); for(i=0;i3;i+)P1=0x7e;delay();P1=0xbd;delay();P1=0xdb;delay();P1=0xe7;delay();for(i=0;i3;i+)P1=0xe7;delay();P1=0xdb;delay();P1=0xbd;delay();P1=0x7e;delay(); for(i=0;i0;x-)for(y=110;y0;y-);1、 利用定时/计数器T0从P1.0输出周期为1s的方波,让发光二极管以1HZ闪烁,设晶振频率为12MHz#include sbit D1=P10;#define uint unsigned int;#define uchar unsigned char;uint tt;void main() TMOD=0x10;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;while(1);void exter() interrupt 1TH0=(65536-50000)/256;TL0=(65536-50000)%256;tt+;if(tt=20)tt=0;D1=D1;2、利用定时/计数器T1产生定时时钟,由P1口控制8个发光二极管,使8个指示灯依次一个一个闪动,闪动频率为10次/秒(8个灯依次亮一遍为一个周期),循环。#include#include#define uint unsigned int;#define uchar unsigned char;uchar tt,temp; temp=0xfe;void main() TMOD=0X10;TH1=(65536-50000)/256;TL1=(65536-50000)%256;EA=1;TR1=1;ET1=1;while(1);void time1() interrupt 3TH1=(65536-50000)/256;TL1=(65536-50000)%256;tt+; if(tt=2) tt=0;if(tt1)P1=temp;elsetemp=_crol_(temp,1);P1=temp;2、 同时用两个定时器控制蜂鸣器发声,定时器0控制频率,定时器1控制同个频率持续的时间,间隔300ms依次输出1,10,50,100,200,400,800,1k(hz)的方波。 #include /52单片机头文件#include /包含有左右循环移位子函数的库#define uint unsigned int /宏定义#define uchar unsigned char /宏定义sbit beep=P26;uchar tt;uint fre,flag;void main() /主函数 fre=50000; beep=0; TMOD=0x11;/设置定时器0,定时器1为工作方式1 TH0=(65536-fre)/256; TL0=(65536-fre)%256; TH1=(65536-50000)/256; TL1=(65536-50000)%256; EA=1;/开总中断 ET0=1;/开定时器0中断 ET1=1; TR1=1; TR0=1;/启动定时器0 while(1);/等待中断产生 void timer0() interrupt 1 /定时器0中断
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号