《单片机C语言程序设计》练习题1.Keil软件的源文件的建立、工程的建立、工程的设置过程?打开keil软件,在硬盘中新建一个文件夹,以保存本实验中所产生的文件,点击“文件”菜单中的“新建”,新建一个源文件,将程序输入文件中,点击“文件”菜单中的”保存”,,给源文件取名并保存为ASM文件类型。点击“工程”菜单中的“新建工程”新建一个工程,给工程取名,并与源文件保存在同一文件夹中,在“CPU选择的对话框中,选择ATMEL公司的At89C52单片机,右击“sourceGroup”,选择“AddFiletoGroup....”,将源文件加入到工程,右击“Target”,选择“optionforTarget......”,选择“输出”列,并选择创建HEX文件,对工程文件调试、编译,无误后生成HEX文件。2.程序调试时可以运用哪些方法进行调试?全速运行,单步运行,连续运行,断点运行3.安装PL2303驱动软件后如何确定该虚拟端口的?鼠标右键点击桌面的“我的电脑”==》设备管理器==端口,可查看到“ProlificUSB-to-SerialcommPort(COM4,根据串口使用情况不同而不同),此即为虚拟端口”4.STC-ISP如何将程序下载到开发板中?打开STC-ISP软件,选择单片机型号,串行口端口,打开HEX文件,点击Download下载,即可实现自动下载编程。5.编程使8个发光二极管按如下方式循环点亮。(1)L6、L4、L2、L0全亮全灭;(2)L7、L5、L3、L1全亮全灭;(3)L7、L6……L0依次单个点亮;(1)采用软件延时,各时间间隔为0.5秒。每次循环结束时蜂鸣器发出一声报警声音。(2)采用外部中断1方式来控制蜂鸣器,即有外部中断按键时,蜂鸣器发出一声报警声音。#includereg51.h#defineuintunsignedintsbitkai=P3^5;sbitbeep=P3^2;voidmDelay(uintDelay){uinti;for(;Delay0;Delay--)for(i=0;i124;i++);}voidmain(){kai=0;//注意,有些实验板可能不是P3.5for(;;){P0=0xAA;//LED亮mDelay(5000);P0=0xFF;mDelay(5000);P0=0x55;mDelay(5000);P0=0xff;//LED灭mDelay(5000);P0=0x7F;mDelay(5000);P0=0x3F;mDelay(5000);P0=0x1F;mDelay(5000);P0=0x0F;mDelay(5000);P0=0x07;mDelay(5000);P0=0x03;mDelay(5000);P0=0x01;mDelay(5000);P0=0x00;mDelay(5000);beep=0;//蜂鸣器叫一声mDelay(500);beep=1;}}6.采用定时器1按方式1工作,要求编写程序模拟如下一个循环彩灯,间隔时间0.5s。(1)L6、L4、L2、L0全亮全灭;(2)L7、L5、L3、L1全亮全灭;(3)L7、L6……L0依次单个点亮;#includereg52.h#defineucharunsignedchar#defineuintunsignedintsbitPower=P3^5;uchartab[]={0xAA,0xFF,0x55,0xff,0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};uintn,i;voidInt0()interrupt3{TH1=(65536-50000)/256;TL1=(65536-50000)%256;n++;}voidmain(){i=0;n=0;Power=0;TMOD=0x10;TH1=(65536-50000)/256;TL1=(65536-50000)%256;EA=1;ET1=1;TR1=1;while(1){if(n10){n=0;P0=tab[i];i++;}if(i11)i=0;}}7.编写程序完成键盘与LED数码管的动态显示,上电初始状态为“0000”或“----”,延时一段时间后熄灭。当键盘输入相应的数字时或字符时在数码管上显示出来,当数字或者字符超过4位时,从LED数码管从右到左循环显示。#includereg52.h#defineucharunsignedchar#defineuintunsignedintsbitPower=P3^5;uchartab[]={0xAA,0xFF,0x55,0xff,0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};uintn,i;voidInt0()interrupt3{TH1=(65536-50000)/256;TL1=(65536-50000)%256;n++;}voidmain(){i=0;n=0;Power=0;TMOD=0x10;TH1=(65536-50000)/256;TL1=(65536-50000)%256;EA=1;ET1=1;TR1=1;while(1){if(n10){n=0;P0=tab[i];i++;}if(i11)i=0;}}8.编写一个开发板的测试程序,要求上电后循环测试如下内容:(1)P0口发光二极管全亮全灭一次;(2)蜂鸣器发出“滴”的声音;(3)4位LED数码显示“8888”后熄灭;#includereg51.h#defineuintunsignedintuinta,b;sbitkai=P3^5;sbitbeep=P3^2;sbitledbit4=P1^7;//LED数码管电源开关sbitledbit3=P1^6;sbitledbit2=P1^5;sbitledbit1=P1^4;voiddelay(uintc){for(a=c;a0;a--)for(b=125;b0;b--);}voidmain(){kai=0;ledbit4=0;ledbit3=0;ledbit2=0;ledbit1=0;while(1){P0=0X00;delay(5000);P0=0XFF;delay(5000);beep=1;delay(5000);beep=0;P0=0x80;delay(5000);P0=0xff;}}