飞思卡尔单片机各种功能程序
更新时间:2023-12-20 22:16:01 阅读量: 教育文库 文档下载
流水灯四种效果:
#include
#include
#include \ unsigned char temp;
//unsigned char pa @0x200; //unsigned char pb @0x202; unsigned char key;
static void delay(void) { volatile unsigned long i; for(i=0;i<100000;i++); }
static unsigned char random;
static void Random(void) {
random = (unsigned char)rand(); }
void effect1() {
unsigned char c; for(c=0;c<=6;c++) { delay();
PORTB = ~(1< for(c=7;c>=1;c--) { delay(); PORTB = ~(1< void effect2() { unsigned char c; for(c=0;c<=6;c++) { delay(); PORTB = ~(3< for(c=7;c>=1;c--) { delay(); PORTB = ~(3< void effect3() { unsigned char c,t=0xfe; for(c=0;c<=7;c++) { PORTB = t; delay(); t<<=1; } } void effect4() { unsigned char c,t=0; for(c=0;c<=7;c++) { PORTB=t; delay(); t = (t<<1)+1;; } } void main(void) { unsigned char x; DDRA=0xf0; DDRB=0xff; for(;;) { x=PORTA&0x03; switch(x) { case 0:effect1(); break; case 1:effect2(); break; case 2:effect3(); break; case 3:effect4(); break; } }/* wait forever */ /* please make sure that you never leave this function */ } //行列反转法 unsigned char key_scan() //键盘扫描函数 { unsigned char x,row=4,col=4,key=16; PUCR|=0x01; //等同于PUCR=PUCR|0x01,PUCR寄存器的第0位设置为1,即允许PORTA端口的上拉电阻。PUCR寄存器的解释参见书本P113 DDRA=0x0f; //行线PA0-PA3设置为输出,列线PA4-PA7设置为输入 DDRA寄存器知识参见书本P113数据方向寄存器 PORTA=0xf0; //0bxxxx0000,四条行线PA0-PA3输出四个0,相当于四条行线接地 x=PORTA&0xf0; //读取四条列线的值,并保留高4位,清除低4位的值 if(x!=0xf0) //如果四条列线不全为1,则说明有按键按下 { switch(x) { case 0xe0:col=1;break; //按键在第1列 case 0xd0:col=2;break; //按键在第2列 case 0xb0:col=3;break; //按键在第3列 case 0x70:col=4;break; //按键在第4列 } //以下开始行列反转,输入变输出,输出变输入。即行线PA0-PA3设为输入,列线PA4-PA7设为输出 DDRB=0xf0; //行线PA0-PA3设为输入,列线PA4-PA7设为输出 PORTA=0x0f;//0b0000xxxx,四条列线PA4-PA7输出四个0,相当于四条列线接地 x=PORTA&0x0f //读取四条行线的值,并保留低4位,清除高4位的值 if(x!=0x0f)//如果四条行线不全为1,则说明有按键按下 { switch(x) { case 0x0e:row=1;break; //按键在第1行 case 0x0d:row=2;break; //按键在第2行 case 0x0b:row=3;break; //按键在第3行 case 0x07:row=4;break; //按键在第4行 } key=(row-1)*4+col-1; //求出键号:0-15的整数 } } return key; //如果没有按键按下,则函数返回的key=16; } main() { unsigned char keyno; while(1) { keyno=key_scan(); //调用键盘扫描函数获取是否有按键按下,是哪个按键按下 if(keyno<16) //keyno<16有按键按下,keyno=16则表明无按键按下 switch(keyno) { case 0: //每一个按键按下后要实现什么功能,程序写在这。 case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11: case 12: case 13: case 14: case 15: } } } //行扫描法1 unsigned char key_scan() { unsigned char x,i,temp,row=4,col=4,key=16; //PUCR|=0x01; //等同于PUCR=PUCR|0x01,PUCR寄存器的第0位设置为1,即允许PORTA端口的上拉电阻。PUCR寄存器的解释参见书本P113 DDRA=0x0f; //行线PA0-PA3设置为输出,列线PA4-PA7设置为输入 DDRA寄存器知识参见书本P113数据方向寄存器 PORTA=0xf0; //0bxxxx0000,四条行线PA0-PA3输出四个0,相当于四条行线接地 x=PORTA&0xf0; //读取四条列线的值,并保留高4位,清除低4位的值 if(x!=0xf0) //如果四条列线不全为1,则说明有按键按下 { switch(x) { case 0xe0:col=1;break; //按键在第1列 case 0xd0:col=2;break; //按键在第2列 case 0xb0:col=3;break; //按键在第3列 case 0x70:col=4;break; //按键在第4列 } //以下开始从第1行到第4行逐行判断按键是否在该行 temp=0b11111110; for(i=1;i<=4;i++) //i代表正在判断按下的按键是否是在第i行 { PORTA=temp; //第i行所在的行线输出0,其他三条行线输出1 x=PORTA&0xf0;//读取四条列线的值,并保留高4位,清除低4位的值 if(x!=0xf0) //如果四条列线不全为1,则说明按键就在第i行,否则表明按键不在该行,则准备扫描下一行 { row=i; key=(row-1)*4+col-1; //求出按键 return key; //退出key_scan函数 } temp=(temp<<1) +1; //按键不在该行,则改变temp的值,为扫描下一行做准备。 } } return key; //如果没有按键按下,程序才回执行到这,此时key为初值16; } main() { unsigned char keyno; while(1) { keyno=key_scan(); //调用键盘扫描函数获取是否有按键按下,是哪个按键按下 if(keyno<16) //keyno<16有按键按下,keyno=16则表明无按键按下 switch(keyno) { case 0: //每一个按键按下后要实现什么功能,程序写在这。 case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11: case 12: case 13: case 14: case 15: } } }
正在阅读:
飞思卡尔单片机各种功能程序12-20
2015—2017高考政治全国卷大题汇总含答案解析01-27
雷达原理的复习资料05-27
单位调档函模板02-11
三菱PLC练习题01-20
江苏国有企业分布现状与改革思路05-19
普通高中信息技术课与各学科整合的探索06-10
化工原理课程设计-ck04-28
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 卡尔
- 单片机
- 各种
- 功能
- 程序
- 六面怪脸
- 会计信息系统试题有答案
- 大工19春《编译原理基础》在线作业1
- 人生四象限和正确创业四阶段
- 市场营销实训报告书 - 图文
- 2018年中小学校思想政治工作自查报告材料
- 优秀网络课程及资源征集活动申报表
- 银行开展打击银行卡犯罪专项行动工作汇报,报告汇报
- 经管学院学风建设调查报告
- 并行工程和传统串行工程两者的比较
- 论民事执行中司法拘留的性质及适用条件
- 常见技巧 经典的Photoshop技巧大全 - 图文
- 公路外业验收汇报材料 - 图文
- SQL数据库习题
- 乐学班会 - 四年级:乐学 勤奋 成长
- FLAC3D常用命令总结
- 重庆市房地产开发项目资本金托管协议
- 水行政执法专业法律知识试卷
- 20、《要是你在野外迷了路》教案(全课时)
- 《新编商务英语阅读教程》(第二版)练习参考答案