单片机程序源代码(6)
0xff,0xe7,0xc3,0x81,
0x00,0x81,0xc3,0xe7};//开幕式编码
uchar temp=0x01,key_count,flag,right,beep_FG; void delay(uint ms) { uint i,j; for(i=ms;i>0;i--) for(j=110;j>0;j--); }
void init() { EA=1;//打开总中断 EX0=1;//打开外部中断INT0 EX1=1;//打开外部中断INT1 IT0=1;//下降沿触发方式 IT1=1;//下降沿触发方式 PX0=0;//设置INT0为低中断优先级 PX1=1;//设置INT1为高中断优先级 }
void interval_LED() { P0=0xff; delay(500); P0=0xaa; delay(500); }
void left_right_move() { if(!right) temp=_crol_(temp,1); else temp=_cror_(temp,1); if(temp==0x01) { right=0; } if(temp==0x80) right=1; }
void open_LED() { uchar count; temp=tab[count++]; if(count==8)
count=0; }
void Beep() { uchar i,j,k; for(i=100;i;i--) for(j=20;j;j--) { for(k=1000;k;k--) beep=~beep; } /*for(i=100;i;i--) for(j=200;j;j--) { for(k=1000;k;k--) beep=~beep; }*/ beep_FG=0; }
void main() { init(); beep=0; while(1) { if(!flag) interval_LED(); else { if(beep_FG) { Beep(); } else { switch(key_count%2) { case 1: left_right_move(); break;//奇数次按键左移右移显示 case 0: open_LED(); break;//偶数次按键拉幕式显示 default:break;
} P0=~temp; delay(400); } } } }
void key1_interrupt() interrupt 0 { flag=1; key_count++; }
void key2_interrupt() interrupt 2 { flag=1; beep_FG=1; }
任务四:采用两个外中断实现LED键控移位
P0端口作为输出口,外接8只LED,P3.2外接按键K1,P3.3外接按键K2。编写程序,要求实现LED键控移位,按下按键K1时,8只LED左移1位;按下按键K2时,8只LED右移1位。
#include
#define uint unsigned int #define uchar unsigned char
uchar key1=0,key2=0,temp1=0,temp2=0,temp11=0,temp12=0; /*void delayms(uint ms) { uint i; while(ms--) { for(i=0;i<120;i++); } } */
void int_int() { EA=1; EX0=1; EX1=1; IT0=1; IT1=1; }
void int0() interrupt 0 {
key1++; }
void int1() interrupt 2 { key2++; }
void main() { uchar a; int_int(); a=0xfe; while(1) { if(temp1!=key1) { P0 = a; a=_crol_(a,1); temp1=key1; } if(temp2!=key2) { P0 = a; a=_cror_(a,1); key2=temp2; } } }
(2)
#include
#define uint unsigned int #define uchar unsigned char uchar key1=0,key2=0,m,n,k;
uchar table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; void int_int() {
EA=1; EX0=1; IT0=1; EX1=1; IT1=1; }
void int0() interrupt 0 {
key1++; m=key1%8; }
void int2() interrupt 2 { key2++; n=key2%8; }
void main() { int_int(); while(1) { k=(m-n+8)%8; P0=table[k]; } }
任务五:采用外中断实现计数
使用单片机P0、P2端口作为输出口,外接一个2位LED数码管,P3.2外接按键K1,P3.3外接按键K2。编写程序,每次按下K1时,LED数码管进行加1显示;每次按下按键K2时,LED数码管进行减1显示,计数范围为0~99。 #include
#define uint unsigned int //宏定义 #define uchar unsigned char //宏定义 uchar table[]={0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90};//0-9共阳字型码编码 char count=0; uchar shi,ge;
void LED_scan()//数码管扫描子函数 { shi=count/10;//分离十位 ge=count;//分离个位 P2=table[ge];//显示个位 P0=table[shi];//显示十位 }
void int_int() //初始化 { EA=1; //打开总中断 EX0=1; //打开外部中断0 EX1=1; //打开外部中断1 IT0=1; //设置下降沿触发方式 IT1=1; //设置下降沿触发方式 }
void main() //主函数
…… 此处隐藏:715字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [高等教育]公司协助某村精准扶贫工作总结.doc
- [高等教育]高二生物知识点总结(全)
- [高等教育]苏教版数学三年级下册《解决问题的策略
- [高等教育]仪器分析课程学习心得
- [高等教育]2017年五邑大学数学与计算科学学院333
- [高等教育]人教版七年级下册语文第四单元测试题(
- [高等教育]2018年秋七年级英语上册Unit7Howmuchar
- [高等教育]2017年八年级下数学教学工作小结
- [高等教育]湖南省怀化市2019届高三统一模拟考试(
- [高等教育]四年级下册科学_基础训练及答案教材
- [高等教育]城郊煤矿西风井管路伸缩器更换施工安全
- [高等教育]昆八中20182019学年度上学期期末考试
- [高等教育]项目部各类人员任命书
- [高等教育]上市公司经营水务产业的模式
- [高等教育]人教版高二化学第一学期第三章水溶液中
- [高等教育]【中考物理第一轮复习资料】四.压强与
- [高等教育]金坑水电站报废改建工程机电设备更新改
- [高等教育]高中生物教学工作计划简易版
- [高等教育]2017年西华大学攀枝花学院(联合办学)44
- [高等教育]最新整理超短爆笑英文小笑话大全
- 优秀教师继续教育学习心得体会
- 阳历到阴历的转换
- 留守儿童教育案例分析
- 华师17春秋学期《玩教具制作与环境布置
- 测速传感器新型安装装置的现场应用
- 人教版小学数学三年级下册第四单元
- 创业个人意向书
- 山东省潍坊市2012年高考仿真试题(三)
- [恒心][好卷速递]四川省成都外国语学校
- 多少人错把好转反应当成了病情加重处理
- 中外广播电视史复习资料整理
- 江苏省扬州市江都区宜陵镇中学2014-201
- 工程造价专业毕业实习报告
- 广西师范学院心理与教育统计
- aympkrq基于 - asp的博客网站设计与开
- 建筑业外出经营相关流程操作(营改增后
- 人治 德治 法治
- [精华篇]常识判断专项训练题库
- 中国共产党为什么要实行民主集中
- 小学数学第三册第一单元试卷(A、B、C




