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
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库南阳理工单片机题库-编程题(3)在线全文阅读。
相关推荐: