1、三程序清单及程序步骤框图 ORG 0000H LJMP MAINMAIN: MOV R0,#30HMOV R2,#10HCLR A A1:MOV R0,A INC R0INC ADJNZ R2,A1MOV R0,#30HMOV R1,#40HMOV R2,#10H A2: MOV A, R0 MOV R1,AINC R0INC R1DJNZ R2, A2MOV R1,#40HMOV DPTR ,#4800HMOV R2, #10H A3: MOV A,R1 MOVX DPTR ,AINC R1INC DPTRDJNZ R2,A3MOV SP,#60HMOV R2,#10HMOV DPTR ,#
2、4800HPUSH DPLPUSH DPHMOV DPTR,#5800HMOV R3,DPLMOV R4,DPH A4: POP DPH POP DPLMOVX A,DPTRINC DPTRPUSH DPLPUSH DPHMOV DPL,R3MOV DPH,R4MOVX DPTR,AINC DPTR MOV R3,DPLMOV R4,DPHDJNZ R2,A4MOV R0,#50HMOV DPTR,#5800HMOV R2,#10H A5: MOVX A,DPTR MOV R0,AINC R0INC DPTRDJNZ R2,A5POP DPH POP DPL HERE: LJMP HEREEN
3、D 三试验电路四程序清单及步骤图程序一ORG0000HLJMP MAINORG 000BH LJMP IPTO MAIN: MOV SP,#30HMOV TMOD,#01HCLR 00HSETB EASETB ET0MOV TH0,#3CHMOV TL0,#0B0HMOV R1,#14HSETB TR0MOV A,#0feHMOV P1,ANT: JNB 00H,NTRL AMOV P1,A CLR 00HLJMP NTIPTO: MOV TH0,#3CHMOV TL0,#0B0HDJNZ R1,TIOMOV R1,#14HSETB00H TIO: RETIEND程序二只需将程序一中“RLA”
4、改为“RR A”即可实现其功效。程序三ORG0000H LJMP MAIN ORG 000BH LJMPIPTO MAIN: MOV SP,#30HMOVTMOD,#01HCLR 00HSETBEASETB ET0MOV TH0,#3CHMOV TL0,#0B0HMOV R2,#0AHMOV R1,#02HSETB TR0MOV A,#0feHMOV P1,ANT: SETB P3.0NT0:JNB01H,NT0 CLR P3.0 CLR01HNT1:JNB 00H,NT1 CLR 01H RL A MOV P1,A CLR 00H LJMP NTIPTO:MOVTH0,#3CH MOV TL
5、0,#0B0H DJNZR2,TIO MOV R2,#0AH SETB 01H DJNZ R1,TIO MOV R1,#02H SETB 00H TIO: RETIEND 程序四(思索题程序)ORG0000H LJMPMAINORG 000BHLJMP IPTO MAIN: MOV SP,#30HMOV P1,#0ffHMOVTMOD,#01HCLR 00HSETB EASETB ET0MOV TH0,#3CHMOV TL0,#0B0HMOV R1,#14HSETB TR0MOV A,#00HNT:JNB 00H,NT INCA MOV R3,A CPL A MOV P1,A CLR 00H
6、MOVA,R3 LJMP NTIPTO:MOV TH0,#3CH MOVTL0,#0B0H DJNZ R1,TIO MOV R1,#14H SETB 00H TIO: RETI END三电路原理图四.程序清单及步骤图程序一ORG0000HLJMPMAIN MAIN:MOVTMOD,#02HMOVTH0,#9CHMOVTL0,#9CHSETBTR0SETBP1.0 HERE:JNB TF0,HERE CPLP1.0CLRTF0LJMPHERE END程序二ORG0000HLJMPMAINORG000BHLJMPIPTO MAIN:MOVSP,#60HMOVTMOD,#02HMOVIE,#82HM
7、OVTH0,#88HMOVTL0,#88HSETBTR0SETBP1.1 HERE:LJMPHERE IPTO: CPLP1.1 RETI END程序三(思索题)ORG0000HLJMPMAIN MAIN:MOVTMOD,#11HMOVTH0,#0FEHMOVTL0,#0D4HMOVTH1,#0FFHMOVTL1,#38HSETBTR1SETBP1.0 HERE: JNBTF1,HERE CPLP1.0SETBTR0CLRTF1CLRTR1MOVTH1,#0FFHMOVTL1,#38H HERE1: JNBTF0,HERE1 CPLP1.0SETBTR1CLRTF0CLRTR0MOVTH0,#
8、0FEHMOVTL0,#0D4H LJMPHERE END五.试验结果 周期为200us方波 周期为240us方波周期为500us占空比为2:5方波三、电路原理图四、程序清单及步骤图程序1:ORG0000H LJMPMAIN MAIN: MOVTMOD,#06HMOVTH0,#9CHMOVTL0,#9CHSETBTR0 HERE:JNB TF0,HERE CPLP1.0CLRTF0LJMPHERE END程序2:ORG0000HLJMPMAINORG000BHLJMPITPO MAIN: MOVSP,#60H MOVTMOD,#06HMOVTH0,#38HMOVTL0,#38HMOVIE,#8
9、2HSETBTR0 HERE:LJMPHERE ITPO:CPLP1.0 RETI END程序3(思索题):ORG0000HLJMPMAINORG001BHLJMPITPO MAIN:MOVSP,#60HMOVTMOD,#62HMOVTH0,#9CHMOVTL0,#9CHMOVTH1, #0CEHMOVTL1,#0CEHMOVIE,#88HSETBTR0SETBTR1SETBP1.0 HERE:JNB TF0,HERE CPLP1.0CLRTF0LJMPHERE ITPO:CPLP1.1 RETI END五、试验结果程序1和程序2从T0接入1000Hz方波,思索题从P1.0口线产生方波从T1接
10、入 计100次脉冲 计200次脉冲思索题波形三、电路原理图四、程序清单及步骤图程序一:ORG0000H LJMPMAINORG0003HLJMPEXTER0ORG000BHLJMPIPTOORG00013HLJMPEXTER1 MAIN:MOVSP,#60HMOVTMOD,#11HMOVIE,#87H MOVIP,#02HMOVTH0,#9EHMOVTL0,#58HMOVTH1,#0D8HMOVTL1,#0F0H HERE:LJMPHERE DELAY:SETBTR1 HEREY:JNBTF1,HEREY CLRTR1CLRTF1MOVTH1,#0D8HMOVTL1,#0F0HRETEXTER
11、0:LCALLDELAY JBP1.0,LOOP0 HERE0:JNBP1.0,HERE0 SETBTR0 LOOP0:RETIEXTER1:LCALLDELAY JBP1.1,LOOP1 HERE1:JNBP1.1,HERE1 CLRTR0 LOOP1:RETI IPTO:CPLP1.2MOVTH0,#9EHMOVTL0,#58H RETI END程序二(思索题)ORG0000HLJMPMAIN ORG0003HLJMPEXTER0ORG000BHLJMPIPTO MAIN:MOVSP,#60HMOVTMOD,#11HMOVIE,#83HMOVIP,#02HMOVTH0,#0B1H MOVT
12、L0,#0E0H MOVTH1,#0D8HMOVTL1,#0F0HMOVR1,#02H HERE:LJMPHERE DELAY:SETBTR1 HEREY:JNBTF1,HEREY CLRTR1CLRTF1MOVTH1,#0D8HMOVTL1,#0F0HRETEXTER0:LCALLDELAY JBP1.0,LOOP0 HERE0:JNBP1.0,HERE0 CPLTR0 OOP0:RETI IPTO: DJNZR1,LOOP CPLP1.2 CPL00HJNB00H,LOOP2MOVR1,#03HLJMPLOOP LOOP2:MOVR1,#02H LOOP: MOVTH0,#0B1H MOV
13、TL0,#0E0H RETIEND五、试验结果1、基础要求部分:将程序产生十六进制代码加载到proteus中,运行仿真开始无波形输出,按下K0键输出周期为50mS连续方波,图5.1所表示,当按下K1键波形消失,反复操作结果一样。2、思索题部分:将程序产生十六进制代码加载到proteus中,运行仿真开始无波形输出,按下K0键输出周期为100mS占空比为2:5连续矩形波,图5.2所表示,当再次按下K0键波形消失,反复操作结果一样。 图5.1 图5.2三、电路原理图 四、程序清单及步骤图程序一:ORG0000H LJMP MAIN ORG000BH LJMPINTO MAIN:LCALLDELY M
14、OVSP,#60H MOVTMOD,#02H MOVIE,#82H MOVTH0,#9CH MOVTL0,#9CH MOVDPTR,#7FFFH MOVA,#81H MOVXDPTR,AMOVR3,#0FFH SETBTR0LOOP0: MOVDPTR,#7FFEH MOVXA,DPTR SWAPA MOVXDPTR,A LJMPLOOP0 INTO:PUSHDPL PUSHDPH PUSHACC MOVDPTR,#7FFCH MOVA,R3 MOVXDPTR,A CPLA MOVR3,A POPACC POPDPH POPDPL RETI DELY:MOVR4,#0FFH LOOP:NOP
15、NOP DJNZR4,LOOP RET END程序二(思索题):ORG0000H LJMP MAIN MAIN:LCALLDELY MOVDPTR,#7FFFH MOVA,#80H MOVXDPTR,A MOVR3,#08H MOVDPTR,#7FFEH MOVA,#0FFH MOVXDPTR,ALOOP0: MOVDPTR,#7FFFH MOVA,#00HLOOP1: MOVXDPTR,A LCALLDELY CPLACC.0 MOVXDPTR,A LCALLDELY CPLACC.0 INCACC INCACC DJNZR3,LOOP1MOVR3,#08H LJMPLOOP0 DELY:M
16、OVR4,#0FFH LOOP3:MOVR5,#0FFH LOOP:NOP NOP NOP NOP NOP DJNZR5,LOOP DJNZR4,LOOP3 RET END五、试验结果1、基础要求部分:将程序产生十六进制代码加载到proteus中,运行仿真能够在示波器中看到图6.1所表示波形,当按下k0键时能够看到D4点亮,同理按下K1键,D5点亮,按下K2键,D6点亮,按下K3键,D7点亮。2、思索题部分:将程序产生十六进制代码加载到proteus中,运行仿真开始二极管全部熄灭,然后从上倒下依次循环点亮。图6.1三、试验电路四、程序清单及步骤图程序一:#include#define ucha
17、r unsigned char#define uint unsigned intsbit smg0=P20; sbit smg1=P21; sbit smg2=P22; sbit smg3=P23;unsigned char code smg_we=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90;uchar zs,xs,ad_data;void ad(void);void delay(uint t); void delay_1ms(void); void display(void); /*主函数*/void main()while(1)uch
18、ar xdata *dr_ad; uint ad_data; dr_ad=0xfff7; *dr_ad=0;delay(15);/延时100us ad_data=*dr_ad; ad_data=ad_data*1.963125; zs=ad_data/100; xs=ad_data%100; display() ; /*延时1ms函数*/void delay_1ms(void)uchar j,t;for(t=100;t0;t-) for(j=19;j0;j-); /*延时子函数*/void delay(uint t) while(t-); /*显示子函数*/void display(void)
19、 P1=smg_wexs%10;smg0=1;smg1=0;smg2=0;smg3=0;delay_1ms();P1=smg_wexs/10; smg0=0;smg1=1;smg2=0;smg3=0;delay_1ms();P1=smg_wezs%10&0x7f; smg0=0;smg1=0;smg2=1;smg3=0;delay_1ms();smg0=0;smg1=0;smg2=0;smg3=0;delay_1ms(); 程序二:查询方法只需将主函数中延时改为一个while循环语句,条件为AD中EOC引脚接单片口线为1即可。程序三:主函数中将总中止和外部中止0开启,将取数据部分放到中止服务程
20、序中,中止服务程序以下。/*中止服务函数*/void ad(void)interrupt 0 using 0 uchar xdata *dr_ad; dr_ad=0xfff7; ad_data=ad_data*1.963125; *dr_ad=0; 五、试验结果将程序产生十六进制代码加载到proteus中,运行仿真,调整滑动变阻器改变AD输入电压,能够到图7.17.4所表示试验结果。图7.1图7.2图7.3图7.4三、试验原理电路图四、程序清单及步骤图#include#define uchar unsigned char#define uint unsigned intuchar jz;uns
21、igned char code zxb_daima=0x7F,0x85,0x8B, 0x92,0x98,0x9E,0xA4,0xAA,0xB0,0xB6, 0xBB, 0xC1, 0xC6, 0xCB,0xD0,0xD5, 0xD9,0xDD,0xE2,0xE5,0xE9,0xEC,0xEF, 0xF2,0xF5, 0xF7, 0xF9,0xFB, 0xFC,0xFD,0xFE,0xFE, 0xFE,0xFE,0xFE,0xFD,0xFC,0xFB,0xF9,0xF7, 0xF5, 0xF2,0xEF,0xEC,0xE9,0xE5,0xE2,0xDD, 0xD9,0xD5,0xD0,0xCB,
22、 0xC6,0xC1, 0xBB, 0xB6, 0xB0,0xAA,0xA4,0x9E,0x98,0x92,0x8B,0x85,0x7F,0x79,0x73,0x6C,0x66,0x60,0x5A,0x54,0x4E,0x48,0x43,0x3D,0x38,0x33,0x2E,0x29, 0x25, 0x21,0x1C,0x19,0x15,0x12,0x0F,0x0C, 0x09, 0x07,0x05,0x03,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x05,0x07,0x09,0x0C,0x0F,0x12,0x15,0x19,0x
23、1C,0x21,0x25,0x29,0x2E,0x33,0x38,0x3D,0x43,0x48,0x4E,0x54,0x5A,0x60,0x66,0x6C,0x73,0x79;/正弦波数据代码/*延时10ms函数*/void delay_10ms(void)uchar j,t;for(t=100;t0;t-)for(j=190;j0;j-); /*延时子函数*/void delay(uint t) while(t-); /*取键值子函数*/uchar key_data(void) uchar i;i=P1;i=i;i=i&0x1f;return (i); /*判键子函数*/uchar key(
24、void)uchar i,d;i=key_data();if(i!=0)delay_10ms();i=key_data();if(i!=0)i=key_data();d=i;while(i!=0)delay_10ms();i=key_data();delay_10ms();i=key_data();while(i!=0)delay_10ms();i=key_data();i=d;return (i); /*方波产生函数*/void fangbo(void)uchar xdata *dr_da;uchar i,j=0;for(i=63;i0&jz!=1;i-) dr_da=0xfffe; *dr
25、_da=j; j=0; jz=key(); for(i=63;i0&jz!=1;i-) dr_da=0xfffe; *dr_da=j; j=255; jz=key(); /*锯齿波产生函数*/void juchibo(void)uchar xdata *dr_da;uchar i,j=0; for(i=63;i0&jz!=2;i-) dr_da=0xfffe; *dr_da=j; j=j+4; jz=key(); /*三角波产生函数*/void sanjiaobo(void)uchar xdata *dr_da;uchar i,j=0;for(i=63;i0&jz!=4;i-) dr_da=0
26、xfffe; *dr_da=j; j=j+4; jz=key(); for(i=63;i0&jz!=4;i-) dr_da=0xfffe; *dr_da=j; j=j-4; jz=key(); /*正弦波产生函数*/void zhengxianbo(void)uchar xdata *dr_da; uchar i,j=0;for(i=128;i0&jz!=8;i-) dr_da=0xfffe; *dr_da=zxb_daimaj; j+; jz=key(); /*梯形波产生函数*/void tixingbo(void) uchar xdata *dr_da; uchar i,j=0;for(i
27、=63;i0&jz!=16;i-) dr_da=0xfffe; *dr_da=j; j=j+4; jz=key(); for(i=63;i0&jz!=16;i-) dr_da=0xfffe; *dr_da=j; j=255; jz=key(); for(i=63;i0&jz!=16;i-) dr_da=0xfffe; *dr_da=j; j=j-4; jz=key(); for(i=63;i0&jz!=16;i-) dr_da=0xfffe; *dr_da=j; j=0; jz=key(); /*主函数*/void main()uchar xdata *dr_da; while(1) jz=k
28、ey(); switch(jz)case 0:break; case 1:jz=0;while(jz=0)fangbo();break; case 2:jz=0;while(jz=0)juchibo();break; case 4:jz=0;while(jz=0)sanjiaobo();break; case 8:jz=0;while(jz=0)zhengxianbo();break; case 16:jz=0;while(jz=0)tixingbo();break; default:break; 五、试验结果将程序产生十六进制代码加载到proteus中,运行仿真按下K0键得到图8.1所表示方波,按下K1键得到图8.2所表示锯齿波,按下K2键得到图8.3所表示三角波,按下K3键得到图8.4所表示正弦波,按下K4键得到图8.5所表示梯形波。 图8.1 图8.2 图8.3 图8.4图8.5