01::MOVSP,#30HSETBIT1 SETBEA SETBEX1MOVDPTR,#******@DPTR,AHERE:LCALLDISPLAYAJMPHERELOOP:MOVDPTR,#0FEF8HMOVXA,***@******@DPTR,ALCALLDSP;对接收的数据进行处理LCALLDSP1LCALLDISPLAY;显示转换的数据LJMPLOOPDSP:MOVB,#100MULABMOVR7,BMOVR6,AMOVR5,#00HMOVR4,#33HMOVR3,#00HMOVR2,#00HLCALLDIV2BYMOVR5,#00HMOVR4,#64HMOVR3,#00HMOVR2,#00HLCALLDIV2BYMOV73H,R6;百位电压值MOVA,R3MOVR7,AMOVA,R2MOVR6,AMOVR5,#00HMOVR4,#0AHMOVR3,#00HMOVR2,#00HLCALLDIV2BYMOV72H,R6;十位电压值MOVA,R3MOVR7,AMOVA,R2MOVR6,AMOVR5,#00HMOVR4,#01HMOVR3,#00HMOVR2,#00HLCALLDIV2BYMOV71H,R6;个位电压值RETDIV2BY:MOV20H,#16;双字节除法DIV2B:CLRC;商存在R7R6,余数存R3R2MOVA,R6RLCAMOVR6,AMOVA,R7RLCAMOVR7,AMOVA,R2RLCAMOVR2,AMOVA,R3RLCAMOVR3,ACLRCMOVA,R2SUBBA,R4MOVR0,AMOVA,R3SUBBA,EXTCLRCMOVR3,AMOVA,R0MOVR2,AMOVA,R6ADDA,#01HMOVR6,AMOVA,R7ADDCA,#00HMOVR7,ANEXT:DJNZ20H,DIV2BRETDSP1:MOVR0,#71HMOVA,***@JNEA,#10,EXIT1;个位加1等于10?等于10,是则个位清零******@R0,AINCR0;指向十位MOVA,***@R0INCA;十位加******@R0,ACJNEA,#10,******@R0,AINCR0MOVA,***@******@R0,ACJNEA,#10,******@R0,AINCR0MOVA,***@******@R0,ACJNEA,#10,******@R0,AEXIT1:RETDISPLAY:MOVR1,#74H;指向数据显示缓冲区MOVR5,#0FEH;显示位选择PLAY:MOVA,R5MOVP2,AMOVA,***@R1MOVDPTR,#TABMOVCA,***@A+DPTRCJNER1,#73H,POWXRLA,#80H;:MOVP1,ALCALLDL1MSDECR1MOVA,.3,ENDOUTRLAMOVR5,AAJMPPLAYENDOUT:RETTAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90HDL1MS:MOVR6,#20DL1:MOVR7,#50DL2:DJNZR7,DL2DJNZR6,DL1RETEND 0000HLJMPMAINMAIN:MOVSP,#30HMOV74H,#00HKEY:ACALLKS;键盘扫描程序段JNZLK1;有键闭合 LCALLDELAY AJMPKEY;没有键闭合LK1:LCALLDELAY;驱动显示程序防抖LCALLDELAYACALLKS;确认有键闭合? JNZLK2 ;真有键闭合 LCALLDELAY;没有键闭合是误按回去! AJMPKEYLK2:MOV74H,ALCALLDELAYJNZSKAJMPKEY;不是!不与理睬KS:MOVA,P1;键盘扫描子程序CPLAANLA,#0FFHRETSK:ACALLKSJNZSK LCALLDELAY LCALLDELAY ACALLKSJNZSKMOVA,.0,MAIN1 .1,.2,MAIN3 .3,MAIN4 .4,MAIN5 LCALLDELAY AJMPKEYMAIN1:MOVDPTR,#7000H;方波 MOVR0,#00HABCD:MOVA,R0 ******@DPTR,A INCR1 MOVR7,P1CJNER7,#0FFH,KEYXYZ:CJNER1,#10,ABCDCPLAMOVR0,A AJMPABCDMAIN2:MOVDPTR,#7000H;锯齿波 MOVR0,#00HABCD2:MOVA,R0 ******@DPTR,A INCR0 MOVR7,P1 CJNER7,#0FFH,KEY LJMPABCD2MAIN3:MOVDPTR,#7000H;三角波 MOVR0,#00HABCD3:
AD转换和DA转换实验 来自淘豆网m.daumloan.com转载请标明出处.