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

单片机程序源代码(6)

来源:网络收集 时间:2026-09-09
导读: 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;//打开

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 #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字,全部文档内容请下载后查看。喜欢就下载吧 ……
单片机程序源代码(6).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)