教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 高等教育 >

单片机程序源代码(7)

来源:网络收集 时间:2026-09-09
导读: { int_int(); //调用初始化函数 while(1) { LED_scan(); //调用数码管扫描函数 } } void int0() interrupt 0//外部中断0服务程序 { count++; //计数加1 if(count==100) //溢出操作 count=0; } void int2() interrup

{ 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字,全部文档内容请下载后查看。喜欢就下载吧 ……
单片机程序源代码(7).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/604998.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)