带注解简单c51程序Word下载.docx
- 文档编号:6624909
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:11
- 大小:18.86KB
带注解简单c51程序Word下载.docx
《带注解简单c51程序Word下载.docx》由会员分享,可在线阅读,更多相关《带注解简单c51程序Word下载.docx(11页珍藏版)》请在冰点文库上搜索。
//P1口的最低位点亮,可以更改数值是其他的
灯点亮
//0xfe是16进制,0x开头表示16进制数,fe换
算成二进制是11111110
while
(1)
//主循环
{
//主循环中添加其他需要一直工作的程序
}
}
-----------------------我是分割线-------------------------
IO口信号输入
P1=P3;
//读入P3的值然后赋值给P1,如果P3.0=0,其
他为1,则执行过该语句后P1.0=0,其他值为1,对应P1.0口的灯亮
//程序可以通过独立按键测试,在开发板上需
要切换成独立按键模式
流水灯
延时子程序
voiddelay(unsignedintcnt)
while(--cnt);
main()
P1=0xfe;
//给初始化值换算成二进制是11111110
while
(1)
delay(30000);
//延时程序
P1<
<
=1;
//左移一位该语句等效于P1=P1<
1
P1|=0x01;
//最后一位补1,该语句等效于P1=P1|
0x01符号"
|"
表示"
或"
if(P1==0x7f)//检测是否移到最左端?
"
=="
表示检测
符号2端的值是否相等
{
P1=0xfe;
//重新赋值
独立按键
sbitkey1=P3^0;
//定义按键位置
sbitkey2=P3^1;
sbitkey3=P3^2;
sbitkey4=P3^3;
voiddelay(unsignedintcnt)
P2=0x00;
if(!
key1)
//按下相应的按键,数码管显示相应的码值
P0=0x06;
//数码管显示"
1"
key2)
P0=0x5B;
//2
key3)
P0=0x4F;
//3
key4)
P0=0x66;
//4
独立按键去抖动
key1)
{
delay(1000);
//去抖动
key2)
//检测按键确实按下,进行按键处理
2"
//这里可以添加按键按下所需要的操作,如数
据加减乘除,蜂鸣器等设备开关
3"
4"
定时器
sbitLED=P1^2;
//定义LED端口
定时器初始化子程序
voidInit_Timer0(void)
TMOD|=0x01;
//使用模式1,16位定时器,使用"
符号可以
在使用多个定时器时不受影响
TH0=0x00;
//给定初值,这里使用定时器最大值从0开
始计数一直到65535溢出
TL0=0x00;
EA=1;
//总中断打开
ET0=1;
//定时器中断打开
TR0=1;
//定时器开关打开
主程序
Init_Timer0();
while
(1);
定时器中断子程序
voidTimer0_isr(void)interrupt1using1
LED=~LED;
//指示灯反相,可以看到闪烁
外部中断0电平触发
P1=0x55;
//P1口初始值
EA=1;
//全局中断开
EX0=1;
//外部中断0开
IT0=0;
//电平触发
while
(1)
//在此添加其他程序
外部中断程序
voidISR_Key(void)interrupt0using1
P1=~P1;
外部中断0边沿触发
IT0=1;
//边沿触发
//s3按下触发一次,P1取反一次,这里需要切换
跳帽到独立按键模式
外部中断1
EX1=1;
IT1=1;
//边沿触发,IT1=0表示电平触发
voidISR_Key(void)interrupt2using1
//在此处可以添加去抖动程序,防止按键抖动造成错误
矩阵键盘
#defineucharunsignedchar
#defineuint
unsignedint
unsignedcharconstdofly[]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
0x77,0x7c,0x39,0x5e,0x79,0x71};
//0-F
函数声明
------------------------------------------------*/
ucharkeyscan(void);
//键盘扫描
voiddelay(uinti);
//演示程序
voidmain()
ucharkey;
//1数码管亮按相应的按键,会显示按键上的字
符
key=keyscan();
//调用键盘扫描,
switch(key)
case0x7e:
P0=dofly[0];
break;
//0按下相应的键显示相对应的
码值
case0x7d:
P0=dofly[1];
//1
case0x7b:
P0=dofly[2];
case0x77:
P0=dofly[3];
case0xbe:
P0=dofly[4];
case0xbd:
P0=dofly[5];
//5
case0xbb:
P0=dofly[6];
//6
case0xb7:
P0=dofly[7];
//7
case0xde:
P0=dofly[8];
//8
case0xdd:
P0=dofly[9];
//9
case0xdb:
P0=dofly[10];
//a
case0xd7:
P0=dofly[11];
//b
case0xee:
P0=dofly[12];
//c
case0xed:
P0=dofly[13];
//d
case0xeb:
P0=dofly[14];
//e
case0xe7:
P0=dofly[15];
//f
键盘扫描程序
ucharkeyscan(void)
//键盘扫描函数,使用行列反转扫描法
ucharcord_h,cord_l;
//行列值中间变量
P3=0x0f;
//行线输出全为0
cord_h=P3&
0x0f;
//读入列线值
if(cord_h!
=0x0f)
//先检测有无按键按下
delay(100);
//去抖
if(cord_h!
=0x0f)
cord_h=P3&
P3=cord_h|0xf0;
//输出当前列线值
cord_l=P3&
0xf0;
//读入行线值
return(cord_h+cord_l);
//键盘最后组合码值
}return(0xff);
//返回该值
延时程序
voiddelay(uinti)
//延时函数
while(i--);
PWM调光
//包含头文件,一般情况不需要改动,头
文件包含特殊功能寄存器的定义
sbitLED=P1^2;
//定义LED灯,通过LED显示调光效果
unsignedcharCYCLE;
//定义周期该数字X基准定时时间如果是
10则周期是10x0.1ms
unsignedcharPWM_ON;
//定义高电平时间
/**********************************************************
********/
/*
延时函数
*/
主函数
bitFlag;
TMOD|=0x01;
//定时器设置0.1msin12Mcrystal
TH0=(65536-100)/256;
TL0=(65536-100)%256;
//定时0.1mS
IE=0x82;
//打开中断
CYCLE=10;
//时间可以调整这个是10调整8位
PWM就是256步
while(!
Flag)
delay(20000);
//延时时间,从一个亮度到下一个亮
度的间隔时间,速度快就能看到连续效果
PWM_ON++;
//这个使用较长延时,以便能看清楚
变化过程
if(PWM_ON==CYCLE)
//这个里可以添加其他程序
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 注解 简单 c51 程序