单片机程序源代码(7)
{ int_int(); //调用初始化函数 while(1) { LED_scan(); //调用数码管扫描函数 } }
void int0() interrupt 0//外部中断0服务程序 { count++; //计数加1 if(count==100) //溢出操作 count=0; }
void int2() interrupt 2 //外部中断1服务程序 { count--; //计数减1 if(count<0) //溢出操作 count=99; }
(2)
#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 delay(uint ms)//延时子函数 { uchar i; for(;ms;ms--) for(i=120;i;i--); }
void LED_scan()//数码管扫描子函数 { shi=count/10;//分离十位 ge=count;//分离个位 P2=0x01; //个位对应的数码管点亮 P0=table[ge];//显示个位 delay(1); P2=0x02; //十位对应的数码管点亮 P0=table[shi];//显示十位 delay(1); }
void int_int() //初始化 { EA=1; //打开总中断 EX0=1; //打开外部中断0 EX1=1; //打开外部中断1 IT0=1; //设置下降沿触发方式 IT1=1; //设置下降沿触发方式 }
void main() //主函数 { int_int(); //调用初始化函数 while(1) { LED_scan(); //调用数码管扫描函数 } }
void int0() interrupt 0//外部中断0服务程序 { count++; //计数加1 if(count==100) //溢出操作 count=0; }
void int2() interrupt 2 //外部中断1服务程序 { count--; //计数减1 if(count<0) //溢出操作 count=99; }
任务六:采用外中断进行计数和清零控制
使用单片机P0、P2端口作为输出口,外接一个2位LED数码管,P3.2外接按键K1,P3.3外接按键K2。编写程序,按键K2作为“加1/暂停/清零”控制;按键K1作为加1计数控制。当按键K2没有按下时,按键K1按下后LED数码管总显示为0;第1次按下键K2时,每次按下K1,LED数码管进行加1显示;第二次按下按键K2时,暂停加1计数,按键K1按下后LED数码管显示暂停前的数值;第3次按下按键K2时,LED数码管显示为0;第4次按下按键K2时,与第1次类似。 #include
#define uint unsigned int #define uchar unsigned char
uchar key1=0,temp1=0,key2=0,temp2=0,key=0; uchar table[]={0XC0,0XF9,0XA4,0XB0, 0X99,0X92,0X82,0XF8, 0X80,0X90}; void delayms(uint ms) {
while(ms--) { uint i=0; for(i;i<120;i++) ; } }
void int_int() { EA=1; EX0=1; EX1=1; IT0=1; IT1=1; }
void int1() interrupt 0 { key2++; }
void int0() interrupt 2 {
key1++; }
void display() { P2=0xfe; P0=table[temp1]; delayms(2); P2=0xfd; P0=table[temp2]; delayms(2); }
void main() { int_int(); while(1) { temp1=key1; temp2=key1/10; switch(key2%3) { case 0:{
while(1) { if(key2%3!=0) break; P2=0xfe; P0=table[0]; delayms(2); P2=0xfd; P0=table[0]; delayms(2); } key1=0; break; } case 1: display(); break; case 2: key=key1; while(1) { if(key2%3!=2) break; P2=0xfe; P0=table[temp1]; delayms(2); P2=0xfd; P0=table[temp2]; delayms(2); } key1=key; break; } } }
第六章
任务一:简单计数器的设计
使用单片机P0,P2端口作为输出口,外接一个2位LED数码管,P3.4外接按键K。编写程序,每次按键K按下时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}; uchar key=0;
void delayms(uint ms) {
uint i; while(ms--) { for(i=0;i<120;i++); } }
void int_int() { EA=1; ET0=1; //开定时器0中断 TR0=1; //启动定时器0 TMOD=0x05;//设置工作方式为1 选择计数功能 TH0=0xff; TL0=0xff; //装初值使得按一下就中断 }
void int1() interrupt 1 { TH0=0xff; TL0=0xff; key++; }
void display() { P2=0xfe; P0=table[key]; delayms(3); P2=0xfd; P0=table[key/10]; delayms(3); }
void main() { int_int(); while(1) { display(); if(key==9&key/10==9)key=0; } }
(2)
…… 此处隐藏:824字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [高等教育]公司协助某村精准扶贫工作总结.doc
- [高等教育]高二生物知识点总结(全)
- [高等教育]苏教版数学三年级下册《解决问题的策略
- [高等教育]仪器分析课程学习心得
- [高等教育]2017年五邑大学数学与计算科学学院333
- [高等教育]人教版七年级下册语文第四单元测试题(
- [高等教育]2018年秋七年级英语上册Unit7Howmuchar
- [高等教育]2017年八年级下数学教学工作小结
- [高等教育]湖南省怀化市2019届高三统一模拟考试(
- [高等教育]四年级下册科学_基础训练及答案教材
- [高等教育]城郊煤矿西风井管路伸缩器更换施工安全
- [高等教育]昆八中20182019学年度上学期期末考试
- [高等教育]项目部各类人员任命书
- [高等教育]上市公司经营水务产业的模式
- [高等教育]人教版高二化学第一学期第三章水溶液中
- [高等教育]【中考物理第一轮复习资料】四.压强与
- [高等教育]金坑水电站报废改建工程机电设备更新改
- [高等教育]高中生物教学工作计划简易版
- [高等教育]2017年西华大学攀枝花学院(联合办学)44
- [高等教育]最新整理超短爆笑英文小笑话大全
- 优秀教师继续教育学习心得体会
- 阳历到阴历的转换
- 留守儿童教育案例分析
- 华师17春秋学期《玩教具制作与环境布置
- 测速传感器新型安装装置的现场应用
- 人教版小学数学三年级下册第四单元
- 创业个人意向书
- 山东省潍坊市2012年高考仿真试题(三)
- [恒心][好卷速递]四川省成都外国语学校
- 多少人错把好转反应当成了病情加重处理
- 中外广播电视史复习资料整理
- 江苏省扬州市江都区宜陵镇中学2014-201
- 工程造价专业毕业实习报告
- 广西师范学院心理与教育统计
- aympkrq基于 - asp的博客网站设计与开
- 建筑业外出经营相关流程操作(营改增后
- 人治 德治 法治
- [精华篇]常识判断专项训练题库
- 中国共产党为什么要实行民主集中
- 小学数学第三册第一单元试卷(A、B、C




