A.(>1秒)
B.(>2秒)
C.(>3秒)
D.(>5秒)
第1题
硬件连接: 按键S1->P0_1(下降沿识别) 按键S2->P0_2(下降沿识别) D1->P1_0 D2->P1_1 …… D8->P1_7(高电平点亮,低电平熄灭) 完善下列CC2530单片机代码,采用中断方式,实现功能: 1、初始状态,D1-D8全部熄灭; 2、按键S1,S2控制8个LED灯D1 -> D8双向循环流水显示。 #include <iocc2530.h> void io_init(void) { //P1口线的普通I/O功能配置 _________________________________ //配置P1SEL ① _________________________________ //配置P1DIR ② _________________________________ //配置P1端口初始电平③ //P0口线输入功能配置 P0SEL &= XXXXX; P0DIR &= XXXXX; P0INP |= XXXXX; //P0中断的相关寄存器配置 __________________________________//配置P0输入中断触发条件④ __________________________________//配置P0中断屏蔽寄存器 ⑤ EA = 1; __________________________________//配置P0中断使能位⑥ P0IFG &= XXXX; P0IF = XXX; } /******************************************************************* ** 中断服务函数 ******************************************************************/ ____________________________________//P0中断服务函数⑦ { if(________ ) //识别按键S1 ⑧ XXXXXXXXXX; if(_________) //识别按键S2 ⑨ XXXXXXXXXX; P0IF=0; ___________________________________//配置P0中断状态标志位寄存器⑩ } /**************************************************************** **** main function ****************************************************************/ void main(void) { io_init(); while(1); } /***************************THE END****************************/
第2题
【填空题】1、六路抢答器的控制,根据电路补充程序 要求: 系统设置单片机复位按钮,主持人按复位键后,才能开始抢答,最先按下的键其键位码(1-6)被数码管显示出来,其他按键无效,等候主持人再次按下单片机复位键后,才能进行第二次抢答。。/*--------第一部分: 命令--------*/ <reg51.h> //包含头文件reg51.h /*---------第二部分:定义 或常量-------*/ sbit S1=P3^0; //定义P3.0引脚位名称为S1,注意,P3^0必须要大写 sbit S2=P3^1; sbit S3=P3^2; S4=P3^3; sbit S5=P3^4; sbit =P3^5; unsigned char k;//定义无符号字符型变量k,保存键值 unsigned char dm ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳数码管对应段码 /*------第三部分:函数原型申明及 -------*/ void delay( ) { while(i--); } void jsm() { if( )//如果S1按下,或者S2按下,或者S3按下,或者S4按下,或者S5按下,或者S6按下 { delay(1000); //延时去抖 if(S1==0||S2==0||S3==0||S4==0||S5==0||S6==0)//如果确实S1按下,或者S2按下,或者S3按下,或者S4按下,,或者S5按下,或者S6按下 { if( )k=1;//如果S1按下,k赋值为1 else if(S2==0)k=2;//如果S2按下,k赋值为2 else if(S3==0)k=3;//如果S3按下,k赋值为3 else if(S4==0)k=4;//如果S4按下,k赋值为4 else if(S5==0)k=5;//如果S3按下,k赋值为3 else if(S6==0)k=6;//如果S4按下,k赋值为4 (S1==0||S2==0||S3==0||S4==0||S5==0||S6==0) //查询S1是不是按下状态,或者S2按下状态,或者S3按下状态,或者S4按下状态,,或者S5按下状态,或者S6按下状态,继续查询 } } } void jcl //键处理 { //键扫描,获取键值 if(k==1){ while(1);}//S1键按下,数码管显示1,结束 if(k==2){P2=dm[2]; }//S2键按下,显示2,结束 if(k==3){P2=dm[3];while(1);}//S3键按下,显示3,结束 if(k==4){P2=dm[4];while(1);}//S4键按下,显示4,结束 if(k==5){ while(1);}//S5键按下,显示5,结束 {P2=dm[6]; }//S6键按下,显示6,结束 } void //主函数 { { }
第3题
【填空题】1、四路抢答器的控制,根据电路补充程序 要求:系统设置单片机复位按钮,主持人按复位键后,才能开始抢答,最先按下的键其对应发光二极管点亮,其他按键无效,等候主持人再次按下单片机复位键后,才能进行第二次抢答。#include <reg51.h> sbit ; S2=P3^1; sbit S3=P3^2 sbit S4=P3^3; sbit =P2^0; sbit D2=P2^1; sbit sbit D4=P2^3; unsigned char k; void delay(unsigned int ) { } void jsm() { if( || || ||S4==0)//如果S1按下,或者S2按下,或者S3按下,或者S4按下 { delay(1000); //延时去抖 if(S1==0||S2==0||S3==0||S4==0)//如果确实S1按下,或者S2按下,或者S3按下,或者S4按下, { if(S1==0)k=1;//如果S1按下,k赋值为1 else if(S2==0) //如果S2按下,k赋值为2 else if(S3==0)k=3;//如果S3按下,k赋值为3 else if(S4==0)k=4;//如果S4按下,k赋值为4 (S1==0||S2==0||S3==0||S4==0) //查询S1是不是按下状态,或者S2按下状态,或者S3按下状态,或者S4按下状态,继续查询 } } } void jcl()//键处理 { //键扫描,获取键值 if(k 1){ while(1);}//S1键按下,点亮D1,结束 if(k==2){D2=0; }//S2键按下,点亮D2,结束 if(k==3){D3=0; }//S3键按下,点亮D3,结束 if(k==4){ while(1);}//S4键按下,点亮D4,结束 } void //主函数 { while(1) { }
第4题
【填空题】1、简易秒表的设计,根据电路补充程序 要求: 设计一个简易秒表,系统一上电,数码管显示“00”每间隔1S,显示加1,当加到60时,数码管显示0,从0开始加。<reg51.h> //包含头文件reg51.h com1=P3^0; com2=P3^1; unsigned char dm ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//0-9对应段码 unsigned char c1,miao=0; //定义无符号字符型变量c1为5万us计数器,变量miao为秒计数器。 void ys(unsigned int t)//延时函数 { while( ) } void t0csh()//T0初始化程序的编写 { TH0=(65536- ) 256;//设置T0计数初值高8位,定时时间50ms TL0=(65536- ) 256;//设置T0计数初值低8位,定时时间50ms =0X01; //设置T0为工作方式1,定时器使用 //定时器T0中断允许 //总中断允许 //启动T0 } void xs()//显示函数 { com1= ;com2= ;//选中1号数码管 P2=dm[ ];//显示变量miao的十位 ys(1000); =0xff;//关闭显示,消影 com1=0;com2=1;//选中2号数码管 P2=dm[ ];//显示变量a的个位 ys(1000); //关闭显示,消影 } void main() { //t0初始化 While { xs(); } void tozd( ) //T0中断函数 { TH0=(65536-50000) 256; TL0=(65536-50000) 256; ;//5万us计算器加1 if( )//1S时间到 { c1=0; miao++; if( >59) miao=0;//当秒计数到60,回到0 } }
第5题
第7题
硬件连接: D1->P1_0 D2->P1_1 …… D8->P1_7(高电平点亮,低电平熄灭) 完善下列CC2530单片机代码,采用中断方式,实现功能: 1、定时器1基于正/倒计数模式定时2秒钟,1次计数周期为40毫秒; 2、8个LED灯D1 -> D8顺向循环流水点亮,显示间隔2秒钟。 #include <iocc2530.h> #define OSC_PD 0x04 #define CLKCONCMD_32MHZ 0x00 /*32MHz XOSC */ #define OSC_32KHZ 0x00 /* external 32 KHz xosc */ #define CLKCONCMD_16MHZ 0x49 /* 16MHz RC0SC */ unsigned char counter; //溢出事件计数器 /**************************************************************** ** main function ****************************************************************/ main() { //设置系统时钟32Mhz CLKCONCMD = (CLKCONCMD_32MHZ | OSC_32KHZ); while (CLKCONSTA != (CLKCONCMD_32MHZ | OSC_32KHZ)); //P1口线的普通I/O功能配置 P1DIR = XXXXXX; P1SEL = XXXXXX; P1 = XXXXXX; //定时器1中断初始化代码 ______________________________//清除T1溢出中断标志位① ______________________________//清除T1中断标志位② ______________________________//使能T1溢出中断事件③ ______________________________//使能T1中断④ EA = 1; //定时器1计数器初始化步骤 _______________________________//配置T1CCOL⑤ _______________________________//配置T1CC0H⑥ _______________________________//配置T1CTL⑦ while(1); } /******************************************************************* ** 中断服务函数 ******************************************************************/ ________________________________//T1中断服务函数⑧ { if(_______________________) //识别T1溢出事件⑨ { if(++counter == _________) //判断是否两秒时间到⑩ { XXXXXXXXXXXXXXXXX; counter = 0; } } XXXXXXXXXXXXXXXXXXX; }
第9题
【填空题】1、可控秒表(按键控制)的设计,根据电路补充程序 要求: 可控秒表的设计(按键控制)S1键按下启动秒表工作,秒表每间隔1S,显示加1,当加到60时,数码管显示0,从0开始继续加1。S2键按下,秒表暂停工作,/*-------------------第一部分:预处理命令-----------------*/ <reg51.h> //包含头文件reg51.h /*--------------第二部分:定义全局变量或常量----------*/ sbit com1=P3^0; sbit com2=P3^1; unsigned char dm[]={ ,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳数码管0-9对应段码 unsigned char c1,miao=50; /*-----第三部分:函数原型申明及函数定义-----*/ void ys( ) { while(t--); } void zdcsh()//中断初始化程序的编写 { TH0=(65536- )/256;//T0定时时间为10000us TL0=(65536- )%256; //设置T0为工作方式1,定时器使用 //定时器T0中断允许 EX0=1;//外部中断0中断允许 EX1=1;//外部中断1中断允许 EA=1;//总中断允许 //外部中断0中断触发方式为边沿触发方式 //外部中断1中断触发方式为边沿触发方式 PX1=1;PX0=1;PT0=0;//外部中断1、外部中断0中断优先级高,定时器T0中断优先级低 TR0=0;//T0关闭 } void xs()//显示函数 { com1=1;com2=0;//选中1号数码管 P2=dm[ ];//显示变量miao的十位 ys(1000); //关闭显示,消影 com1=0;com2=1;//选中2号数码管 P2=dm[ ];//显示变量miao的个位 ys(1000); P2=0xff;//关闭显示,消影 } void main() { //调用中断初始化函数 while( ) { xs(); } } void tozd( ) interrupt //T0中断函数 { TH0=(65536- )/ ; TL0=(65536-10000)%256; c1++;//5万us计算器加1 if( )//1S时间到 { miao++; if( ) miao=0;//当秒计数到60,回到0 } } } void wbzd0() //外部中断0对应中断函数 { //启动定时器T0 } void wbzd1() //外部中断1对应中断函数 { TR0=0;//关闭定时器T0 }
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!