《《自BG16》编程题含答案.docx》由会员分享,可在线阅读,更多相关《《自BG16》编程题含答案.docx(28页珍藏版)》请在优知文库上搜索。
1、自BG16编程题1、清零程序(将2000H-20FFH的内容清等)2、查找零的个数,并把结果存2100单元.C-S1.WT3、将外部存储器的OOOBH和OOOCH单元的内容互换(C51)4、格1字节的二进制数转换成3个十进制数(BCD码)并存入20H开始的单元中5、单片机P1.n的P1.Q,P1.1接两个开关K1.,K2,P1.4、P1.5、P1.6和P1.7各接-只发光:极管,如图所示通过按键KI、K2选杼点亮V1.I-V1.4中的一个。-ia-XTA1.IXTA12ASTPo(IADoPO1,W1.N2ADeWAeOP04AtXPoS舄05P0G(A0P07.AD7P2*8P2.1.Aft
2、P2Z,A10P2a11P24,A12PZ5,A13P2AMPZ7.,A15PJnw(DP3DPJ1.R%P3.3W11pa4-roPioPI1PiP13P14P1.5P1.6PUAtWC1DiD4K2K1.点亮的灯001.1.0I1.2101.3II1.46、流水灯(让P1.口接的8个流水灯从上到卜再从卜到上点亮一次)U1XTA1.1XTA1.2RSTPSENA1.EPIOP1.1P1.2P1.3P1.4P1.5P1.6P17poa,AooPO1/AD1PO2AgP03.AD3P04.AD4PO5.AD5PO6.AD6PoZAD7P2ASP2.1ZA9P22A10P23A11P2AA12P2
3、S,A13P2GA14P2.7/A15P3ORXDP3.1/TXDP3.21NT0P3.aTOT7P3.4.T0AT8gC517、用单片机采集8个开关状态.然后将采集到的结果通过发光二极管显示.当采集到的数据为。时.与其对应的发光二极管亮.当某一开关断开时,对W的发光二极管不亮8.单片机控制8个IED小灯从左到右再从右到左一次点亮,反发循环。9、8个小灯加一点亮.10.制作一个09数杪器11、制作一个599的计数器,P1.7接按谊.P2按数码管段,共阳极数码管,P3.0.P3.1接数码管位码,何按一次犍,数码管显示加一:XTAMXTAUWT墓主主主AUPtU1.VUMPOfAXM22皿PO-I
4、DJrt*D5PC1.OiJW”。诩p三f2P220RPza01,rjAttP2S4t)UP2.TM0P34D外诬PiGW1.TP1.沏13、电路连接如图所示.每按一次键,触发一次中断,点亮一个发光:极管,实现流水灯功能。若规定外部中断。为边沿触发方式,低优先级,试楸写主程序与中断阻务程序。14、如图所示,利用外部中断O和1,要求按动按雄K1.使8个发光二极管从D1.到D8流水,按动按键K2使8个发光二极管从V18到VI1.流水.编写程序AT89C3RSTOXTA1.ITA1.2RSTPSNA1.E银t步SPACK65.262;35T12132137-P2-P1.0T2P1.1T2EP1.2P
5、UPI.4P13P16P1.7POaAoOPO1,ADIP02AD2P03AD3POACMPosAo6P0,A0PO7),AD7P2A8P2.1,A9P22A1OP23,A11P2AA12P25,A13P2A,A14P2J.A15P3OWDP3.iXDP321NTpP3.3nfIT1.P3.4/TOP3TJ.P36-WR建35亘五D81062063064DeS066DG7K115、P32P35分别接4个按个S1S4,编制4个按犍的扫描子程序例如,K1.键按下,对应数码管显示16、选择TI的方式1用于定时,要求在P1.O脚上输出周期为IOmS的方波球片机采用12MHz晶版.17、试设定定时定/计
6、数器To为计数方式2。当To引脚出现负跳变时,向CPU申请中断,将P1.O埔II的小灯亮灭状态改变一次.18 .采用12MHZ晶报,在P1.O脚上谕出周期为2Ss,高电平占空比为20%的脓冲信号.19 .设单片机品报领率为6MHz,利用定时器TO产生定时脉冲。要求好隔2ms从P1.0脚上输出脓宽为2个机器周期的正脉冲.20、有甲和乙两个AT89C51单片机,甲单片机读入其P1.口的开关状态后通过申行口发送到乙单片机,乙单片机将接收到的数据送其P1.口,通过发光二极管显示。21、使用DA8832输出;角波、锯齿波、JE弦波,自BG16编程题答案1、清零程序(将200OH20FFH的内容清零)C-
7、51WfOindUdemain()(intI;unsignedcharxdata*p=0x2000;/指针指向2000H单元/for(i三03256J*)*P=0;p+;)清零2000H-20FFH单元/2,查找零的个效,并把结果存2100单元.C-S1.程序Minc1.udemain()unsignedcharxdata*p=0x2000*J1.t,P指向20H单元/for(i=0;i16;iw)if(p=O)n+;P+;)p=02100;p=n;intn=0,i;/若读单元内容为零,则/指针指向下一单元/指针P指向210OH单元/把个数放在210OH单元中/3、将外部存储号的OoOBH和O
8、OoCH单元的内容互换(C51)#inc1.ude Voidmain() unsignedcharc; WhiIe(I) cBYTE(1.1.); BYTE(11J=XBYTE12; XBYTE(12)=C )4、将1字节的二进制效转换成3个十进制数(BCD)并存入20H开始的单元中 Vodmain() unsignedcharp; Unsignedcharnumber=123; p=umber100; P+; p=(number%100)10; Pw; p=(number%100)%10;5.单片机P1.的P1.0,P1.1.接两个开关K1.,K2,PI.4、P1.6、P1.6和P1.7各接
9、一只发光二极管,如图所示通过按键K1.、K2选择点亮Vn-VI4中的一个,U1.找XTA1.IXTAURSTR(TADOPOtADIPO2ADCPOaADGP04,AD*P05,AD0P06AD6PO7.,AD7P2AA8P?1-*P23WP2aA11P24A12P2SA13P?OAUP27.,A15P1OP11P1.2P1.3PKP15P16P1.7P3QOXDP3.1.TDPJZ布访P3.3MPSATDDiD4K2K1.点亮的灯OO1.IOI1.21O1.3II1.4inc1.ude,reg51,hnvoidmain()(chara;a=P1.;a=a003;屏蔽高6位if(a=O)P1.
10、=0xe3:e1.se1.f(a=1.)P1.=OXd3;e1.seif(a=2)P1.=0xb3:e1.seP1.=0x73:并inc1.ude“AT89X51.h”voidmain()chara;a=P1.;a=a&0x03;switch(八)冰敲高6位case0:PI=OXe3:break:case1:P1.=0d3:case2:P1.=0b3;case3:P1.=0x73:break:break:break:6、流水灯U1.XTA1.IXTA1.2EC四REDP1.2PUP1.4PUPI.6P1.7AT89C511.EDREDPoaADOPO1.AD1P02,AD2PO3.AD3PO4
11、,AD4POSAD5P0&AD6PO7,AD7P2ASP21,A9P2,A10P23A11P2AAI2P25A13P2,AUP27,A15PSOHXDP3.GDP32而5P3.3WTP34T0P3.yrP36WRP37.R5#inc1.udeInc1.udemain() unsignedcharcnt三Oztemp; unsignedinti=OJ; wh1.e(1.) (temp=0xfe; for(i=0;i8;i*) ( P2=temp; for(j=0J=200j*); temp=_cro1.(temp,1);* ) )7、用单片机采集8个开关状态,然后将采集到的结果通过发光二极管显示
12、,当采集到的数据为。时,与其时应的发光.极管克,当某一开关断开时,对应的发光:极管不完C1.D(PSW_6AY1.J欲1XTA1.1.POOAOOP0.1.AD1POZ*02P03APO4ACXPOsAD5POGAO5POXAO,P2Q3P219P22A2P2.aAHP2.4.A12P25A13P2.6AMP2.7.,AtSXTA1.2RSTMEFaP1.OPOQRXDPI.1P3,TXDP1.2P32WroP1.JP33T1P1.4PISPiT1.P1.JSP36WRP1.7”7,祁U1.VCCm1.三D5WEEN31.IZ1.eDYE1.1.CW330D71.EDCf1.EEN1.EDYE
13、1.1.CWinc1.udemain()(chari;whi1.e(1.)P2=i; 8.单片机控制8个1.ED小灯从左到右再从右到左一次点亮,反复循环. 9、8个小灯加一点亮.10.制作一个09数杪潺Hinc1.udedefineUintunsignedint-WdefineUeharunsignedcharucharSeg11=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90voidde1.ay()-uchari;uintj;for(i=0;i200;i+*Jfor(j=0;j1000;j+);-voidmain()-uchari;whi1.e(1.)-for(i=0;i10;i+)-P2=seg(i; de1.ay(); 1.I.制作一个099的计数器,P1.7接按键,P2接数眄管段