南阳理工单片机题库-编程题
更新时间:2023-09-09 14:06:01 阅读量: 教育文库 文档下载
- 单片机编程题库及答案推荐度:
- 相关推荐
1、设计一个2*2的行列式键盘(同在P1口)电路并编写键扫描程序。
#include
unsigned char row,col=0,k =-1; P1=0xfc;
if((P1&0xfc)==0xfc) return(k); delay20ms(); if((P1&0xfc)==0xfc) return(k);
for(row=0;row<2;row++) {
P1=~(1< while(k&(1<<(col+2))) col++; k=row*2+col; P1=0xfc; while(P1&0xfc!=0xfc); break; } } return k; } 2、 编写一函数to_asc,把传送给它的低半字节数据转换成ASCII码,并将其返回。 unsigned char to_asc(char d) { d+=0x30; if(d>0x39) d+=7; return d; } 3、 使用89C52串行口以工作方式3进行串口通信,假定波特率为9600b/s,单片机晶振频率为11.0592MHz。请编写全双工通信程序,以中断方式接受和发送数据,并对数据进行奇偶校验。设发送的50个数据在片外数据区,地址从0x0010开始的区域,接收的数据保存0x80开始的区域,接收到‘$’后表示结束。 #include unsigned char xdata *SendBuffer=0x0010; unsigned char xdata *RecvBuffer=0x0080; unsigned char i,j; bit SendOver,RecvOver; void main() { TMOD=0x20; TH1=0xfd; Tl1=0xfd; TR1=1; SCON=0xc0; ES=1; EA=1; ACC=SendBuffer[i++]; TB8=P; SBUF=ACC; while(1); } void Serial() interrupt 4 { if(TI) { TI=0; ACC=SendBuffer[i++]; TB8=P; SBUF=ACC; if(i==50) SendOver=1; } else { RI=0 ACC=SBUF; if(RB8==P) { RecvBuffer[j++]=ACC; if(ACC=='$') RecvOver=1; } } } 4、写出单片机C语言程序中语句“TMOD=0x23;”的功能。 设置T以模式2定时,设置T0以模式3定时。 5、编写一函数,查找片外RAM区域中从0x0100开始的200个单元中出现的0xaa的次数,并将查找的结果从函数中返回。 unsigned char find(void) { unsigned char data i, d=0; unsigned char xdata *p; i=200; p=0x0100; while(i--) if(*(p++)==0xaa) d++; return d; } 6、对89C52单片机编写程序,使串行口以方式1查询方式自收自发(接收和发送都需要查询),波特率为4800b/s.设单片机的晶振为11.0592MHZ。 #include unsigned char c; TMOD=0x20; TH1=0xfa; TL1=0xfa; TR1=1; SCON=0x50; while(1) { while(RI==0); RI=0; c=SBUF; SBUF=c; while(TI==0); TI=0; } } 7、用单片机P0口输出端选码,P口输出位选码,写出数码管显示程序。 #include {0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f, 0x7c,0x39,0x5e, 0x79, 0x71,0x40,0x00} 0x6f, 0x77, unsigned char dispbuf[6]; void disp() { unsigned char i; for(i=0;i<6;i++) { P0=LED[dispbuf[i]]; P1=1< 8、设fsoc=11.0592MHz,试编写一段程序,其功能 为对串行口初始化, 使之工作与方式1,波特率为1200b/s;并用查询串行口状态的方法,读出接收缓冲区的数据并回送到发送缓冲区。 #include unsigned char c; TMOD=2; TH1=0xe8; TL1=0xe8; TR1=1; SCON=0x50; while(1) { while(!RI); RI=0; c=SBUF; SBUF=c; while(!TI); TI=0; } } 9、 某MCS-51单片机系统使用定时器/计数器T0定时,从P1.0产生频率为100kHz等宽矩形波。假定单片机的晶振频率为12MHz,不考虑T1。完成下列各问题: (1)计算方波周期和T0的定时时间。 (2)计算T0在定时时间内的计算值; (3)应该选T0以何种模式工作最恰当?写出模式字TMOD的值; (4)计算T0的定时初值; (5)编写主函数和T0中断服务函数,使T0以中断方式P1.0产生方波。 (1)10μs,5μs (2)5 (3)模式2,TMOD=0X22 (4)251 (5)C语言程序 #include T0中断服务函数: void int_t0(void) interrupt 1 { P1_0=~P1_0; } 9-1、某MCS-51单片机系统使用定时器/计数器T1定时,产生频率为1000Hz方波声音信号,要求方波信号从P3.5引脚输出。设fosc=6MHz,不考虑T0.完成下列各问题: (1)计算声音信号的周期和T0的定时时间。 (2)计算T1在定时时间内的计数值; (3)应该选T1以何种模式工作最恰当?写出模式字TMOD的值; (4)计算T1的定时初值; (5)编写主函数和T1中断服务函数,使T1以中断方式P3.5引脚产生方波。 (1)1ms,500μs (2)250 (3)模式2,TMOD=0X25 (4)6 (5)C语言程序 #include T1中断服务函数: void int_t1(void) interrupt 3 { P35=~P35; } 10、写出单片机C语言程序中语句“TMOD=0x92;\ 设置T1以模式1定时、外部门控制运行,设置T0以模式2定时。 11、编写一密码锁开锁时的密码核对函数,函数入口参数为开锁者输入的6位十进制数(长整型),系统已经保存有10组密码passw,函数的功能是把输入的数与保存的密码逐个比较,正确时返回1,错误时返回0。 bit check_password(long dd) { unsigned char i; for(i=0;i<10;i++) if(passw[i]==dd) return 1; return 0; } 12、编写函数,查找code区域中从0x0030开始的100个单元中出现0x55的次数,并将查找的结果从函数中返回。 unsigned char find(void) { unsigned char i,dd=0; unsigned char code *p; i=100; p=0x0030; while(i--) if(*(p++)==0x55) dd++; return dd; } 13、设89C52单片机的晶振为11.0592MHz,串行口工作于方式3做数据收发,波特率为4800b/s。完成以下串行通信的初始化工作。 (1)写出T1以模式2定时作为波特率发生器的模式字; (2)计算T1的计数初值; (3)写出串行口控制寄存器的控制字; (4)写出初始化程序段(包括定时器和串行口)。 (1)TMOD=0x20 (2)0xfa (3)SCON=0xc0 (4)TMOD=0x20; TH1=0xfa; TL1=0xfa; TR1=1; SCON=0xc0; 14、编写一函数move—data,把程序存储器地址0x30开始的20个字节数据,传送到片内RAM的数组array中。 unsigned char data array[20]; void move_data() { unsigned char i; unsigned char code *pp; pp=0x30; for(i=0;i<20;i++) array[i]=*(pp+i); } 14-3、编写一函数move—xdata,把程序存储器地址0x200开始的50个字节数据,传送到片内RAM的数组array中。 unsigned char xdata array[50]; void move_xdata() { unsigned char i; unsigned char code *pp; pp=0x200; for(i=0;i<50;i++) array[i]=*(pp+i); } 15、设89C52单片机的晶振为11.0592MHz,串行口工作于方式3做数据收发,波特率为9600b/s。完成以下串行通信的初始化工作。 (1)写出T1以模式2定时作为波特率发生器的模式字; (2)计算T1的计数初值; (3)写出串行口控制寄存器的控制字; (4)写出初始化程序段(包括定时器和串行口)。 (1)TMOD=0x20 (2)0xfa (3)SCON=0xc0 (4)TMOD=0x20; TH1=0xfa; TL1=0xfa; TR1=1; SCON=0x50; 16、编写一函数move_idata,把片外数据存储器地址从0x0000开始的30个字节数据,传送到片内数据存储器地址从0x80开始的地方。 void move_idata() { unsigned char i; unsigned char idata *pi; unsigned char xdata *px; pi=0x80; px=0; for(i=0;i<30;i++) *(pi+i]=*(px+i); } } 17、某89C52单片机的P1口接8个发光二极管,拟用T1定时中断,控制P1口每250ms输出一次做右移流水灯显示,电路如图所示。设晶振为6MHz,不考虑T0。完成下列各问题: (1)P1口各位输出高电平还是低电平发光二极管亮? (2)拟使T1定时多少ms、中断多少次使P1输出一次? (3)拟选T1以模式几定时?写出模式字TMOD的值; (4)计算T1的定时初值; (5)编写主函数和T1中断服务函数,实现流水灯功能。 (1)低电平发光二极管亮 (2)125ms;2次 (3)模式1,TMOD=OX11 (4)3036 (5)C语言程序 #include unsigned char aa=0x80; 主函数: main() { TMOD=0x21; TL1=220,TH1=11; EA=1,ET1=1; TR1=1; P1=~aa; while(1); } T1中断服务函数: void int_t1(void) interrupt 3 { TL0=220,TH0=11; aa<<=1; P1=~aa; } 18、编写一函数,对无符号字符型数组用冒泡法从小到大进行排序,函数的入口参数为拟排序的数组aa的数组的长度m。 void sort(unsigned char aa, unsigned char m) { unsigned char I,j,n,tem; for(i=0;i { n=m-i-1; for(j=0;j 19、在一个fosc为12MHz的89C52系统中接有一片ADC0809,它的地址为7FFFH,试编写ADC0809初始化程序和定时采样通道2的程序(假设采样频率为1ms/次,每次采样4个数据)。 #include define DAC0809 XBYTE[0x7fff] unsigned char xdata buffer[4] _at_ 0xa0; void main() { TMOD=0x01; TH0=0xFC; TL0=0x18; EA=1; ET0=1; TR0=1; DAC0809=2; while(1); } void time0_srv() interrupt 1 { unsigned char i; TH0=0xFC; TL0=0x18; for(i=0;i<4;i++) { DAC0809=2; delay(); buffer[i]=DAC0809; } } 20、设某MCS-51单片机系统的振荡频率为12MHz,编写程序,用定时器/计数器T0以模式1定时,中断方式在P1.0引脚产生周期为1000μs的方波。假设没有使用T0. (1)定时时间为1000μs/2, 计数值为1000μs/2/机器周期=500,T0初值为65036 (2)C语言程序: #include T0中断服务函数: void int_t0(void) interrupt 1 { TL0=12; TH0=254; P10=~P10; }
正在阅读:
南阳理工单片机题库-编程题09-09
河北省大学生运动会02-06
护理学院护士专业毕业生自荐信范文06-08
海运提单的内容与缮制方法07-08
2013年甘肃省一万名考试最新冲刺练习题及答案(马哲)03-30
精准扶贫贫困户登记表09-05
液晶显示设计06-25
一年级下册_百数表08-19
连锁快餐厅选址10要素07-21
马家店小学课题申请 - 评审书 - 图文06-13
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 南阳
- 题库
- 单片机
- 理工
- 编程
- 网店的物流配送模式研究
- 重庆渝长路施工组织设计
- 2019教师资格证考试精编背诵版(综合素质+教育教学知识与能力)
- 人教版音乐七年级上册第六单元教案管弦和鸣
- 水文学重点
- 2015年10月生物选考试题
- 《名校课堂》2016年秋九年级英语人教版练习:Unit 8 单元知识背记手册
- 汽车设计复习题答案
- 人教版数学必修一函数与方程练习题
- 第八章思考题与习题答案
- 如何理解中国人的心理与行为作业
- 专业技术人员创新能力培养与提高2016
- 审计(2016)第07章风险评估课后作业讲解
- 学术论文写作指导手册
- AVC系统闭环运行实用操作手册 - 图文
- 写好作文开头与结尾的方法新
- 2014年5月24日网络工程师上午题
- 2016-2022年中国自然修护面膜市场深度研究与投资前景报告 - 图文
- 2011年4月高等教育自学考试保险法试题和答案 - 图文
- 6.5吨起重机液压传动系统