單片機(jī)匯編語(yǔ)言經(jīng)典一百例_第1頁(yè)
單片機(jī)匯編語(yǔ)言經(jīng)典一百例_第2頁(yè)
單片機(jī)匯編語(yǔ)言經(jīng)典一百例_第3頁(yè)
單片機(jī)匯編語(yǔ)言經(jīng)典一百例_第4頁(yè)
單片機(jī)匯編語(yǔ)言經(jīng)典一百例_第5頁(yè)
已閱讀5頁(yè),還剩52頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

P1LAMP.ASMORG0000HAJMPMAINORG0030HMAIN:9MOVA,#00HMOVP1,A;滅所有的燈MOVA,#11111110BMAIN1:MOVP1,A;開(kāi)最左邊的ACALLDELAY;延時(shí)RLA;將開(kāi)的燈向右邊移AJMPMAIN;循環(huán)DELAY:MOV30H,#0FFHD1:MOV31H,#0FFHD2:DJNZ31H,D2DJNZ30H,D1RETEND方波輸出P1.0

FAN.ASMORG0000HMAIN:; P1.0 //////////////ACALLDELAYSETBP1.0ACALLDELAY10CLRP1.0AJMPMAIN;//////////////////////////////////////////////////DELAY:MOVR1,#0FFHDJNZR1,$RETEND5.1定時(shí)1秒報(bào)警1 1 pl.o 1DIN1.ASMORG0000HAJMPMAINORG000BH是否到500工作于方AJMPDIN0;定時(shí)器是否到500工作于方TFLAGEQU34H;時(shí)間秒標(biāo)0.2秒,即50*0.2=1秒MOVTMOD,#00000001B;1

MOVTL0,#0AFHMOVTH0,#3CH;設(shè)定時(shí)時(shí)間為0.05秒,定時(shí)20次則一秒11SETBEA;開(kāi)總中斷SETBET0;開(kāi)定時(shí)器0中斷允許SETBTR0;開(kāi)定時(shí)0運(yùn)行SETBP1.0LOOP:AJMPLOOPDIN0:;是否到一秒////////////////////////////////////////INCC:INCTFLAGMOVA,TFLAGCJNEA,#20,REMOVTFLAG,#00HCPLP1.0;//////////////////////////////////////////////////RE:0.05周期是10.05周期是1微秒使用定時(shí)器165535 200HZMOVTH0,#3CH;20次則一秒RETIEND頻率輸出公式f=1/ts51 12M工作于方式0,最200=1/t: t=0.005 500012250065535-2500=63035 :F63Bf200.asm200HZ:63035:F63B250HZ:63535:F82F300HZ:63868:F97C200HZP1.0 200HZF200.ASMORG0000HAJMPMAINORG001BHAJMPDIN0MAIN:CLRP1.0;產(chǎn)生一個(gè)低電平,實(shí)際上p1.0MOVTMOD,#00010000B;定時(shí)器1工作于方式0MOVTH1,#0F6HMOVTL1,#3BH;頻率產(chǎn)生的時(shí)間,詳細(xì)請(qǐng)SETBEA;開(kāi)總中斷13SETBTR1;開(kāi)定時(shí)器1運(yùn)行SETBET1;開(kāi)定時(shí)器1允許LOOP:AJMPLOOP;無(wú)限循環(huán)DIN0:CPLP1.0;產(chǎn)生一個(gè)高電平,MOVTH1,#0F6HMOVTL1,#3BH;RETI;返回END200 250HZP1.0200 250HZF250.ASMORG0000HAJMPMAINORG001BHAJMPDIN1MAIN:;定義頻率200和300//////////////////////////////////F2HEQU30HF2LEQU31HF3HEQU32HF3LEQU33H14;//////////////////////////////////////////////////;定義頻率保持初值//////////////////////////////////MOVR1,#50MOVR2,#02H;//////////////////////////////////////////////////;頻率賦初值////////////////////////////////////////MOVF2H,#0F6HMOVF2L,#3BHMOVF3H,#0F8HMOVF3L,#2FH;//////////////////////////////////////////////////CLRP1.0; P1.0MOVTMOD,#00010000B;定時(shí)器工作于方式1MOVTH1,F2HMOVTL1,F2L;200HZSETBEA;開(kāi)總中斷SETBTR1;開(kāi)定時(shí)器1運(yùn)行SETBET1;開(kāi)定時(shí)器1允許LOOP:AJMPLOOPDIN1:CPLP1.0; P1.0p1.0;頻率保持時(shí)間//////////////////////////////////////DJNZR1,REMOVR1,#50DJNZR2,REMOVR2,#02H15;//////////////////////////////////////////////////MOVA,F2HCJNEA,F3H,XIA; 300HZAJMPJIA;頻率高位沒(méi)到300HZ 1XIA:INCF2LMOVA,F2LCJNEA,#00H,REINCF2HMOVA,F2HCJNEA,F3H,RE;/////////////////////////////////////////////; 300HZ 300HZJIA:INCF2L; 200HZ 1MOVA,F2LCJNEA,#F3L,RECLRTR1;/////////////////////////////////////////////RE:MOVTH1,F2HMOVTL1,F2LRETIEND160——9999顯示S51 099999999.ASMORG0000HMAIN:GEEEQU30HSHIEQU31HBEIEQU32HQIANEQU33H;定義個(gè)十百千MOVGEE,#00HMOVSHI,#00HMOVBEI,#00HMOVQIAN,#00H;賦初值MOVSCON,#00H;串行口工作于方式0.同步移位//////////////////////////////////DISPLAY:ACALLDELAY;延時(shí)MOVDPTR,#SETTABMOVA,GEEMOVCA,@A+DPTRMOVSBUF,AD1:JNBTI,D117CLRTIMOVDPTR,#SETTABMOVA,SHIMOVCA,@A+DPTRMOVSBUF,AD2:JNBTI,D2CLRTIMOVDPTR,#SETTABMOVA,BEIMOVCA,@A+DPTRMOVSBUF,AD3:JNBTI,D3CLRTIMOVDPTR,#SETTABMOVA,QIANMOVCA,@A+DPTRMOVSBUF,AD4:JNBTI,D4CLRTI;/////////////////////////////////////////////;個(gè),十,百,千的依次加一/////////////////////INCGEEMOVA,GEECJNEA,#0AH,DISPLAYMOVGEE,#00HINCSHIMOVA,SHICJNEA,#0AH,DISPLAY18MOVSHI,#00HINCBEIMOVA,BEICJNEA,#0AH,DISPLAYMOVBEI,#00HINCQIANMOVA,QIANCJNEA,#0AH,DISPLAYMOVQIAN,#00HAJMPDISPLAY;//////////////////////////////////////////////////;延時(shí)//////////////////////////////////////////////DELAY:MOVR1,#0FFHE1:MOVR2,#0FFHDJNZR2,$DJNZR1,E1RET;/////////////////////////////////////////////SETTAB:DB0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH,F6H,0EEH,3EH,9CH,7AH,9EH,8EH;數(shù)顯代碼ENDAD7.1ADADC08091916 05VO--OFFH,圖15所示電位器,會(huì)在數(shù)碼管上看到隨不同電壓而變化的16ADC0809IN31615ad.asm:ORG0000HMAIN1:ACALLDELAY;延時(shí)ACALLAD;AD;將轉(zhuǎn)換的數(shù)字量屏蔽高位低位送顯////////////////////MOV31H,30HMOVA,30HANLA,#0FHMOVDPTR,#SETTABMOVCA,@A+DPTRMOVSBUF,AD1:JNBTI,D1CLRTI;//////////////////////////////////////////////////;將轉(zhuǎn)換的數(shù)字量屏蔽低位高位送顯////////////////////MOVA,30H20ANLA,#0F0HSWAPAMOVDPTR,#SETTABMOVCA,@A+DPTRMOVSBUF,AD2:JNBTI,D2CLRTI;//////////////////////////////////////////////////AJMPMAIN1;返回主程序AD:MOVDPTR,#7F00H;指向轉(zhuǎn)換地址MOVA,#03H;指向轉(zhuǎn)換口MOVX@DPTR,A;轉(zhuǎn)換MOVR1,#64HD3:DJNZR1,D3;等100微秒轉(zhuǎn)換完MOVXA,@DPTR; AMOV30H,A; 30HRETDELAY:;延時(shí)MOVR2,#0FFHD14:MOVR3,#0FFHD12:DJNZR3,D12DJNZR2,D14RETSETTAB:DB0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH,0F6HDB0EEH,3EH,9CH,7AH,9EH,8EH217.2十六進(jìn)制兩位數(shù)加法器(數(shù)碼顯示)ADC0809

1616起微調(diào)圖16所示電位器,輸入兩個(gè)不同電壓,數(shù)碼16示兩個(gè)不同的對(duì)應(yīng)16進(jìn)制數(shù),隨后數(shù)碼管會(huì)顯示兩add2.asm:ORG0000HMAIN:ADNUMBEREQU30H;ADADDNUMBEREQU31H;加數(shù)值1ADLEQU32H;//ADHEQU33H;ADLDISLEQU34H;//DISHEQU35H;顯示高低位值A(chǔ)DDTOTALEQU36H;ADADDJWEQU37H;加法進(jìn)位數(shù)ADDHOLDEQU38H;賦初值////////////////////////////////////////////MOVADDHOLD,#00HMOVADDNUMBER,#00HMOVADL,#00HMOVADH,#00HMOVDISL,#00H22MOVDISH,#00HMOVADDJW,#00HMOVADDTOTAL,#00H;//////////////////////////////////////////////////MAIN1:ACALLAD;ADACALLDELAY;延時(shí)ACALLCAIFEN;ADACALLDISPLAY;呼叫顯示子程序MOVA,ADNUMBER;ADCJNEA,ADDHOLD,ADD3;ADTOC\o"1-5"\h\zAD AD3AJMPMAIN1;是相等的,證AD ADADD3:MOVA,ADDHOLDCJNEA,#00H,ADD4MOVADDHOLD,ADNUMBER;有一種情況就AD 00AD值A(chǔ)JMMAIN1ADD4:MOVADDNUMBER,ADDHOLD;是真的輸入AD ADMOVADDHOLD,ADNUMBER; ADAD; AD////////////////////////////////ACALLDELAYACALLCAIFEN23ACALLDISPLAY;//////////////////////////////////////////////////DISPLAY1:ACALLDELAY;延時(shí)ACALLADD1;呼叫加法子程序ACALLDISPLAY;顯示LOOP:AJMPLOOP;返回主程序;///////////////////////////////////////ADAD:MOVDPTR,#7F00H;MOVA,#03H;指向轉(zhuǎn)換口MOVX@DPTR,A;轉(zhuǎn)換MOVR1,#64HD1:DJNZR1,D1;等100微秒轉(zhuǎn)換完MOVXA,@DPTR; AMOVADNUMBER,A; 30HRET;//////////////////////////////////////////////////;AD//////////////////////////////////////CAIFEN:MOVA,ADNUMBERANLA,#0FHMOVADL,A;取低位MOVA,ADNUMBERANLA,#0F0HSWAPAMOVADH,A;取高位MOVDISL,ADL24MOVDISH,ADH;給顯示值RET;//////////////////////////////////////////////////;顯示//////////////////////////////////////////////DISPLAY:MOVA,DISLMOVDPTR,#SETTABMOVCA,@A+DPTRMOVSBUF,AD3:JNBTI,D3CLRTIMOVA,DISHMOVDPTR,#SETTABMOVCA,@A+DPTRMOVSBUF,AD4:JNBTI,D4CLRTIMOVA,ADDJWMOVDPTR,#SETTABMOVCA,@A+DPTRMOVSBUF,AD5:JNBTI,D5CLRTIMOVSBUF,#00HD6:JNBTI,D6CLRTIRET;//////////////////////////////////////////////////25;加法程序//////////////////////////////////////////ADD1:CLRCMOVA,ADDNUMBER;ADADDCA,ADDHOLD;ADMOVADDTOTAL,A;將此次加的值給和JNCADDJW1;有無(wú)進(jìn)位?INCADDJW;有進(jìn)位,進(jìn)位值給ADDJWADDJW1:ANLA,#0FHMOVDISL,A;加值取低位MOVA,ADDTOTALANLA,#0F0HSWAPAMOVDISH,A;加值取高位RET;//////////////////////////////////////////////////DELAY:;延時(shí)MOVR3,#0AHDD1:MOVR1,#0FFHD2:MOVR2,#0FFHDJNZR2,$DJNZR1,D2DJNZR3,DD1RETSETTAB:DB0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,260FEH,0F6HDB0EEH,3EH,9CH,7AH,9EH,8EHEND7.3軟件濾波程序介紹(7.31—7.34):您如果接觸過(guò)模電就知一次電壓量的采集中,在很短的時(shí)間內(nèi)對(duì)它進(jìn)行6,將它轉(zhuǎn)換為數(shù)字量后求和(7.31),分析出6次的最大值和最小值(7.32),然后減去最大值和最7.33),除以4(7.44)得到平均值。這樣實(shí)際上鐘表起微調(diào)電位器依次輸入6個(gè)電壓量。7.317.32會(huì)小值,7.33,7.34程序會(huì)繼續(xù)顯示除4后么要選擇取6個(gè)取6個(gè)數(shù),減均值是除4.計(jì)算除一個(gè)2,實(shí)際們選擇取6個(gè)數(shù)令移2次就行277.31(add6.asm):ORG0000HMAIN:ADNUMBEREQU30H;ADADDNUMBEREQU31H;加數(shù)值1ADLEQU32H;//ADHEQU33H;ADLDISLEQU34H;//DISHEQU35H;顯示高低位值A(chǔ)DDTOTALEQU36H;ADADDJWEQU37H;加法進(jìn)位數(shù)ADDHOLDEQU38HADDFLAGEQU39H;加標(biāo)志ENDFLAGEQU40H;賦初值////////////////////////////////////////////MOVADDHOLD,#00HMOVADDNUMBER,#00HMOVADL,#00HMOVADH,#00HMOVDISL,#00HMOVDISH,#00HMOVADDJW,#00HMOVADDFLAG,#00HMOVENDFLAG,#00HMOVADDTOTAL,#00H;//////////////////////////////////////////////////MAIN1:28;AD//////////////////////////////////////////ACALLDELAYACALLDELAYACALLADMAIN3:ACALLCAIFENACALLDISPLAY;//////////////////////////////////////////////////; ADACALLDELAYACALLADD1ACALLDISPLAYINCADDFLAGMOVA,ADDFLAGCJNEA,#06H,MAIN2LOOP:AJMPLOOP;//////////////////////////////////////////////////; ADAD ADAD///////////////////////////////////////ADMAIN2:ACALLDELAYACALLADMOVA,ADNUMBERCJNA,ADDTOTAL,MAIN3AJMMAIN2;//////////////////////////////////////////////////;////////////////////////////////////////////ADAD:29MOVDPTR,#7F00H;指向轉(zhuǎn)換地址MOVA,#03H;指向轉(zhuǎn)換口MOVX@DPTR,A;轉(zhuǎn)換MOVR1,#64HD1:DJNZR1,D1;等100微秒轉(zhuǎn)換完MOVXA,@DPTR; AMOVADNUMBER,A; 30HRET;//////////////////////////////////////////////////;AD//////////////////////////////////////CAIFEN:MOVA,ADNUMBERANLA,#0FHMOVADL,A;取低位MOVA,ADNUMBERANLA,#0F0HSWAPAMOVADH,A;取高位MOVDISL,ADLMOVDISH,ADH;給顯示值RET;//////////////////////////////////////////////////;顯示//////////////////////////////////////////////DISPLAY:MOVA,DISLMOVDPTR,#SETTABMOVCA,@A+DPTRMOVSBUF,A30D3:JNBTI,D3CLRTIMOVA,DISHMOVDPTR,#SETTABMOVCA,@A+DPTRMOVSBUF,AD4:JNBTI,D4CLRTIMOVA,ADDJWMOVDPTR,#SETTABMOVCA,@A+DPTRMOVSBUF,AD5:JNBTI,D5CLRTIMOVSBUF,#00HD6:JNBTI,D6CLRTIRET;//////////////////////////////////////////////////;加法程序//////////////////////////////////////////ADD1:CLRCMOVADDTOTAL,ADNUMBERMOVA,ADNUMBERADDCA,ADDHOLDMOVADDHOLD,AJNCADDJW1INCADDJW31ADDJW1:ANLA,#0FHMOVDISL,A;加值取低位MOVA,ADDHOLDANLA,#0F0HSWAPAMOVDISH,A;加值取高位RET;///////////////////////////////////////////////DELAY:;延時(shí)MOVR3,#0AHDD1:MOVR1,#0FFHD2:MOVR2,#0FFHDJNZR2,$DJNZR1,D2DJNZR3,DD1RETSETTAB:DB0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH,0F6HDB0EEH,3EH,9CH,7AH,9EH,8EHEND7.32求六位和中的最大值和最小值(數(shù)碼顯示)add61.asm:ORG0000HMAIN:ADNUMBEREQU30H;ADADLEQU32H;//32ADHEQU33H;ADLDISLEQU34H;//DISHEQU35H;顯示高低位值A(chǔ)DDTOTALEQU36H;ADADDJWEQU37H;加法進(jìn)位數(shù)ADDHOLDEQU38HADDFLAGEQU39H;加標(biāo)志ENDFLAGEQU40HADH1EQU41H;AD中最大的值A(chǔ)DL1EQU42H;AD中最小的值A(chǔ)DHOLDHEQU43HADHOLDLEQU44H;ADADFOUREQU45HSUBEQU46H;減去高低位后的值JWHOLDEQU47H;保存進(jìn)位值;賦初值////////////////////////////////////////////MOVADDHOLD,#00HMOVADL,#00HMOVADH,#00HMOVDISL,#00HMOVDISH,#00HMOVADDJW,#00HMOVADDFLAG,#00HMOVENDFLAG,#00HMOVADDTOTAL,#00HMOVADH1,#00HMOVADL1,#00H33MOVADHOLDH,#00HMOVFOUR,#00HMOVADHOLDL,#00HMOVJWHOLD,#00HMOVSUB,#00H;//////////////////////////////////////////////////MAIN1:ACALLDELAYACALLDELAYACALLAD;ADMAIN3:ACALLCAIFENACALLDISPLAY;顯示ACALLDELAYACALLDELAY;算最大值和最小值//////////////////////////////////ACALLADDHACALLADDL;//////////////////////////////////////////////////;加和值顯示///////////////////////////////////////ACALLADD1ACALLDISPLAY;//////////////////////////////////////////////////;判是否加到了6次///////////////////////////////////INCADDFLAGMOVA,ADDFLAGCJNEA,#06H,MAIN2;/////////////////////////////////////////////////ACALLDELAY34ACALLDELAYACALLDELAYACALLDELAYACALLDELAYACALLDELAYACALLCAIFEN1;拆最小值A(chǔ)CALLCAIFEN2;拆最大值A(chǔ)CALLDISPLAY;顯示最大值最小值LOOP:AJMPLOOP; AD ///////MAIN2:ACALLDELAYACALLADMOVA,ADNUMBERCJNEA,ADDTOTAL,MAIN3AJMPMAIN2;//////////////////////////////////////////////////;AD////////////////////////////////////////////AD:MOVDPTR,#7F00H;指向轉(zhuǎn)換地址MOVA,#03H;指向轉(zhuǎn)換口MOVX@DPTR,A;轉(zhuǎn)換MOVR1,#64HD1:DJNZR1,D1;等100微秒轉(zhuǎn)換完MOVXA,@DPTR; AMOVADNUMBER,A; 30HRET;//////////////////////////////////////////////////;AD//////////////////////////////////////35CAIFEN:MOVA,ADNUMBERANLA,#0FHMOVADL,A;取低位MOVA,ADNUMBERANLA,#0F0HSWAPAMOVADH,A;取高位MOVDISL,ADLMOVDISH,ADH;給顯示值RET;//////////////////////////////////////////////////;顯示//////////////////////////////////////////////DISPLAY:MOVA,DISLMOVDPTR,#SETTABMOVCA,@A+DPTRMOVSBUF,AD3:JNBTI,D3CLRTIMOVA,DISHMOVDPTR,#SETTABMOVCA,@A+DPTRMOVSBUF,AD4:JNBTI,D4CLRTIMOVA,ADDJWMOVDPTR,#SETTAB36MOVCA,@A+DPTRMOVSBUF,AD5:JNBTI,D5CLRTIMOVA,FOURMOVDPTR,#SETTABMOVCA,@A+DPTRMOVSBUF,AD6:JNBTI,D6CLRTIRET;////////////////////////////////////////////////;加法程序////////////////////////////////////////ADD1:CLRCMOVADDTOTAL,ADNUMBERMOVA,ADNUMBERADDCA,ADDHOLDMOVADDHOLD,AJNCADDJW1INCADDJWADDJW1:ANLA,#0FHMOVDISL,A;加值取低位MOVA,ADDHOLDANLA,#0F0HSWAPAMOVDISH,A;加值取高位RET37;//////////////////////////////////////////////////;AD ////////////////////////////////////ADDH:MOVA,ADH1CJNEA,#00H,ADDH1MOVADH1,ADNUMBERAJMPREADDH1:MOVA,ADNUMBERCLRCSUBBA,ADH1JCREMOVADH1,ADNUMBERRE:RET;//////////////////////////////////////////////////;AD ////////////////////////////////////ADDL:MOVA,ADL1CJNEA,#00H,ADDL1MOVADL1,ADNUMBERAJMPRE1ADDL1:MOVA,ADNUMBERCLRCSUBBA,ADL1JNCRE1MOVADL1,ADNUMBERRE1:RET;//////////////////////////////////////////////////;AD ////////////////////////////38CAIFEN1:MOVA,ADL1ANLA,#0FHMOVADL,A;取低位MOVA,ADL1ANLA,#0F0HSWAPAMOVADH,A;取高位MOVDISL,ADLMOVDISH,ADH;給顯示值RET;/////////////////////////////////////////////;AD ///////////////////////CAIFEN2:MOVA,ADH1ANLA,#0FHMOVADL,A;取低位MOVA,ADH1ANLA,#0F0HSWAPAMOVADH,A;取高位MOVJWHOLD,ADDJWMOVADDJW,ADLMOVFOUR,ADH;給顯示值RET;//////////////////////////////////////////////////DELAY:;延時(shí)MOVR3,#0AH39DD1:MOVR1,#0FFHD2:MOVR2,#0FFHDJNZR2,$DJNZR1,D2DJNZR3,DD1RET;//////////////////////////////////////////////////SETTAB:DB0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH,0F6HDB0EEH,3EH,9CH,7AH,9EH,8EHEND7.33add62.asmORG0000HMAIN:ADNUMBEREQU30H;AD轉(zhuǎn)換值A(chǔ)DLEQU32H;//ADHEQU33H;ADLDISLEQU34H;//DISHEQU35H;顯示高低位值A(chǔ)DDTOTALEQU36H;ADADDJWEQU37H;加法進(jìn)位數(shù)ADDHOLDEQU38HADDFLAGEQU39H;加標(biāo)志ENDFLAGEQU40HADH1EQU41H;AD中最大的值40ADL1EQU42H;AD中最小的值A(chǔ)DHOLDHEQU43HADHOLDLEQU44H;ADADFOUREQU45HSUBEQU46H;減去高低位后的值JWHOLDEQU47H;保存進(jìn)位值;賦初值///////////////////////////////////////////MOVADDHOLD,#00HMOVADL,#00HMOVADH,#00HMOVDISL,#00HMOVDISH,#00HMOVADDJW,#00HMOVADDFLAG,#00HMOVENDFLAG,#00HMOVADDTOTAL,#00HMOVADH1,#00HMOVADL1,#00HMOVADHOLDH,#00HMOVFOUR,#00HMOVADHOLDL,#00HMOVJWHOLD,#00HMOVSUB,#00H;//////////////////////////////////////////////////MAIN1:ACALLDELAYACALLDELAY41ACALLAD;ADMAIN3:ACALLCAIFENACALLDISPLAY;顯示ACALLDELAYACALLDELAY;算最大值和最小值//////////////////////////////////ACALLADDHACALLADDL;//////////////////////////////////////////////////;加和值顯示///////////////////////////////////////ACALLADD1ACALLDISPLAY;/////////////////////////////////////////////////;判是否加到了6次//////////////////////////////////INCADDFLAGMOVA,ADDFLAGCJNEA,#06H,MAIN2

;//////////////////////////////////////////////////ACALLDELAYACALLDELAYACALLDELAYACALLDELAYACALLDELAYACALLDELAYACALLCAIFEN1;拆最小值A(chǔ)CALLCAIFEN2;拆最大值A(chǔ)CALLDISPLAY;顯示最大值最小值A(chǔ)CALLDELAY42ACALLDELAYACALLJIAN1;呼叫減最大值最小ACALLCAIFEN3;拆分ACALLDISPLAY;顯示減去最大值最A(yù)CALLDELAYACALLDELAYACALLDELAY///LOOP:AJMPLOOP///; ADMAIN2:ACALLDELAYACALLADMOVA,ADNUMBERCJNEA,ADDTOTAL,MAIN3AJMPMAIN2;/////////////////////////////////////////////////;AD///////////////////////////////////////////AD:MOVDPTR,#7F00H;指向轉(zhuǎn)換地址MOVA,#03H;指向轉(zhuǎn)換口MOVX@DPTR,A;轉(zhuǎn)換MOVR1,#64HD1:DJNZR1,D1;等100微秒轉(zhuǎn)換完MOVXA,@DPTR; AMOVADNUMBER,A; 30HRET43;//////////////////////////////////////////////////;AD//////////////////////////////////////CAIFEN:MOVA,ADNUMBERANLA,#0FHMOVADL,A;取低位MOVA,ADNUMBERANLA,#0F0HSWAPAMOVADH,A;取高位MOVDISL,ADLMOVDISH,ADH;給顯示值RET;//////////////////////////////////////////////////;顯示//////////////////////////////////////////////DISPLAY:MOVA,DISLMOVDPTR,#SETTABMOVCA,@A+DPTRMOVSBUF,AD3:JNBTI,D3CLRTIMOVA,DISHMOVDPTR,#SETTABMOVCA,@A+DPTRMOVSBUF,AD4:JNBTI,D4CLRTI44MOVA,ADDJWMOVDPTR,#SETTABMOVCA,@A+DPTRMOVSBUF,AD5:JNBTI,D5CLRTIMOVA,FOURMOVDPTR,#SETTABMOVCA,@A+DPTRMOVSBUF,AD6:JNBTI,D6CLRTIRET;/////////////////////////////////////////////;加法程序/////////////////////////////////////ADD1:CLRCMOVADDTOTAL,ADNUMBERMOVA,ADNUMBERADDCA,ADDHOLDMOVADDHOLD,AJNCADDJW1INCADDJWADDJW1:ANLA,#0FHMOVDISL,A;加值取低位MOVA,ADDHOLDANLA,#0F0H45SWAPAMOVDISH,A;加值取高位RET;/////////////////////////////////////////////////;AD ///////////////////////////////////ADDH:MOVA,ADH1CJNEA,#00H,ADDH1MOVADH1,ADNUMBERAJMPREADDH1:MOVA,ADNUMBERCLRCSUBBA,ADH1JCREMOVADH1,ADNUMBERRE:RET;//////////////////////////////////////////////////;AD ////////////////////////////////////ADDL:MOVA,ADL1CJNEA,#00H,ADDL1MOVADL1,ADNUMBERAJMPRE1ADDL1:MOVA,ADNUMBERCLRCSUBBA,ADL1JNCRE1MOVADL1,ADNUMBER46RE1:RET;//////////////////////////////////////////////////;AD ////////////////////////////CAIFEN1:MOVA,ADL1ANLA,#0FHMOVADL,A;取低位MOVA,ADL1ANLA,#0F0HSWAPAMOVADH,A;取高位MOVDISL,ADLMOVDISH,ADH;給顯示值RET;/////////////////////////////////////////////////;AD ///////////////////////////CAIFEN2:MOVA,ADH1ANLA,#0FHMOVADL,A;取低位MOVA,ADH1ANLA,#0F0HSWAPAMOVADH,A;取高位MOVJWHOLD,ADDJWMOVADDJW,ADLMOVFOUR,ADH;給顯示值RET47;//////////////////////////////////////////////////;分解減去最高位和最低位的數(shù)////////////////////////CAIFEN3:MOVA,SUBANLA,#0FHMOVADL,AMOVA,SUBANLA,#0F0HSWAPAMOVADH,AMOVDISL,ADLMOVDISH,ADHRET;//////////////////////////////////////////////////;減去最高位和最低位////////////////////////////////JIAN1:MOVFOUR,#00HMOVADDJW,JWHOLDMOVA,ADDHOLD;取和值CLRCSUBBA,ADH1;減最高位JNCJIAN2DECADDJW;有進(jìn)位,高位減一JIAN2:CLRCSUBBA,ADL1;減低位JNCTUI;無(wú)進(jìn)位出去,有進(jìn)DECADDJWTUI:MOVSUB,A; SUBRET;//////////////////////////////////////////////////;濾波//////////////////////////////////////////////DELAY:;延時(shí)MOVR3,#0AHDD1:MOVR1,#0FFHD2:MOVR2,#0FFHDJNZR2,$DJNZR1,D2DJNZR3,DD1RET;//////////////////////////////////////////////////SETTAB:DB0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH,0F6HDB0EEH,3EH,9CH,7AH,9EH,8EHEND7.34除4所得軟件濾波值(數(shù)碼顯示)add63.asmORG0000HMAIN:ADNUMBEREQU30H;ADADLEQU32H;//ADHEQU33H;ADLDISLEQU34H;//49DISHEQU35H;顯示高低位值A(chǔ)DDTOTALEQU36H;ADADDJWEQU37H;加法進(jìn)位數(shù)ADDHOLDEQU38HADDFLAGEQU39H;加標(biāo)志ENDFLAGEQU40HADH1EQU41H;ADADL1EQU42H;AD中最小的值A(chǔ)DHOLDHEQU43HADHOLDLEQU44H;ADADFOUREQU45HSUBEQU46H;減去高低位后的值JWHOLDEQU47H;保存進(jìn)位值;賦初值//////////////////////////////////////////MOVADDHOLD,#00HMOVADL,#00HMOVADH,#00HMOVDISL,#00HMOVDISH,#00HMOVADDJW,#00HMOVADDFLAG,#00HMOVENDFLAG,#00HMOVADDTOTAL,#00HMOVADH1,#00HMOVADL1,#00HMOVADHOLDH,#00HMOVFOUR,#00H50MOVADHOLDL,#00HMOVJWHOLD,#00HMOVSUB,#00H;//////////////////////////////////////////////////MAIN1:ACALLDELAYACALLDELAYACALLAD;ADMAIN3:ACALLCAIFENACALLDISPLAY;顯示ACALLDELAYACALLDELAY;算最大值和最小值////////////////////////////////ACALLADDHACALLADDL;//////////////////////////////////////////////////;加和值顯示////////////////////////////////////////ACALLADD1ACALLDISPLAY;//////////////////////////////////////////////////;判是否加到了6次///////////////////////////////////INCADDFLAGMOVA,ADDFLAGCJNEA,#06H,MAIN2;/////////////////////////////////////////////////ACALLDELAYACALLDELAYACALLDELAY51ACALLDELAYACALLDELAYACALLDELAYACALLCAIFEN1;拆最小值A(chǔ)CALLCAIFEN2;拆最大值A(chǔ)CALLDISPLAY;顯示最大值最小值A(chǔ)CALLDELAYACALLDELAYACALLJIAN1;呼叫減最大值最小值程序ACALLCAIFEN3;拆分ACALLDISPLAY;顯示減去最大值最小值后的ACALLDELAYACALLDELAYACALLDELAYACALLLUBO;濾波程序ACALLDELAYACALLCAIFEN3ACALLDISPLAY;顯示LOOP:AJMPLOOP; AD ///////MAIN2:ACALLDELAYACALLADMOVA,ADNUMBERCJNEA,ADDTOTAL,MAIN3AJMPMAIN2;//////////////////////////////////////////////////52;AD////////////////////////////////////////////AD:MOVDPTR,#7F00H;指向轉(zhuǎn)換地址MOVA,#03H;指向轉(zhuǎn)換口MOVX@DPTR,A;轉(zhuǎn)換MOVR1,#64HD1:DJNZR1,D1;等100微秒轉(zhuǎn)換完MOVXA,@DPTR; AMOVADNUMBER,A; 30HRET;//////////////////////////////////////////////;AD//////////////////////////////////CAIFEN:MOVA,ADNUMBERANLA,#0FHMOVADL,A;取低位MOVA,ADNUMBERANLA,#0F0HSWAPAMOVADH,A;取高位MOVDISL,ADLMOVDISH,ADH;給顯示值RET;//////////////////////////////////////////////////;顯示//////////////////////////////////////////////DISPLAY:MOVA,DISLMOVDPTR,#SETTAB53MOVCA,@A+DPTRMOVSBUF,AD3:JNBTI,D3CLRTIMOVA,DISHMOVDPTR,#SETTABMOVCA,@A+DPTRMOVSBUF,AD4:JNBTI,D4CLRTIMOVA,ADDJWMOVDPTR,#SETTABMOVCA,@A+DPTRMOVSBUF,AD5:JNBTI,D5CLRTIMOVA,FOURMOVDPTR,#SETTABMOVCA,@A+DPTRMOVSBUF,AD6:JNBTI,D6CLRTIRET;//////////////////////////////////////////////////;加法程序//////////////////////////////////////////ADD1:CLRCMOVADDTOTAL,ADNUMBER54MOVA,ADNUMBERADDCA,ADDHOLDMOVADDHOLD,AJNCADDJW1INCADDJWADDJW1:ANLA,#0FHMOVDISL,A;加值取低位MOVA,ADDHOLDANLA,#0F0HSWAPAMOVDISH,A;加值取高位RET;//////////////////////////////////////////////////;AD值中的最大值////////////////////////////////////ADDH:MOVA,ADH1CJNEA,#00H,ADDH1MOVADH1,ADNUMBERAJMPREADDH1:MOVA,ADNUMBERCLRCSUBBA,ADH1JCREMOVADH1,ADNUMBERRE:RET;//////////////////////////////////////////////////;AD ////////////////////////////////////ADDL:55MOVA,ADL1CJNEA,#00H,ADDL1MOVADL1,ADNUMBERAJMPRE1ADDL1:MOVA,ADNUMBERCLRCSUBBA,ADL1JNCRE1MOVADL1,ADNUMBERRE1:RET;//////////////////////////////////////////////////;AD ////////////////////////////CAIFEN1:MOVA,ADL1ANLA,#0FHMOVADL,A;取低位MOVA,ADL1ANLA,#0F0HSWAPAMOVADH,A;取高位MOVDISL,ADLMOVDISH,ADH;給顯示值RET;////////////////////////////////////////////////;AD //////////////////////////CAIFEN2:MOVA,ADH1ANLA,#0FH56MOVADL,A;取低位MOVA,ADH1ANLA,#0F0HSWAPAMOVADH,A;取高位MOVJWHOLD,ADDJWMOVADDJW,ADLMOVFOUR,ADH;給顯示值RET;//////////////////////////////////////////////////;分解減去最高位和最低位的數(shù)////////////////////////CAIFEN3:MOVA,SUBANLA,#0FHMOVADL,AMOVA,SUBANLA,#0F0HSWAPAMOVADH,AMOVDISL,ADLMOVDISH,ADHRET;//////////////////////////////////////////////////;減去最高位和最低位////////////////////////////////JIAN1:MOVFOUR,#00HMOVADDJW,JWHOLDMOVA,ADDHOLD;取和值57CLRCSUBBA,ADH1;減最高位JNCJIAN2DECADDJW;有進(jìn)位,高位減一JIAN2:CLRCSUBBA,ADL1;減低位JNCTUI;無(wú)進(jìn)位出去,有進(jìn)位高位DECADDJWTUI:MOVSUB,A; SUBRET;//////////////////////////////////////////////////;濾波//////////////////////////////////////////////LUBO:;除2//利用二進(jìn)制右移位來(lái)實(shí)現(xiàn)///////////////////////CLRCMOVA,ADDJWRRCAMOVADDJW,AMOVA,SUBRRCAMOVSUB,A;//////////////////////////////////////////////////;再除一次2,達(dá)到除4的效果//////////////////////////CLRCMOVA,ADDJWRRCA58MOVADDJW,AMOVA,SUBRRCAMOVSUB,A;//////////////////////////////////////////////////RET;//////////////////////////////////////////////////DELAY:;延時(shí)MOVR3,#0AHDD1:MOVR1,#0FFHD2:MOVR2,#0FFHDJNZR2,$DJNZR1,D2DJNZR3,DD1RET;//////////////////////////////////////////////////SETTAB:DB0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH,0F6HDB0EEH,3EH,9CH,7AH,9EH,8EHEND

7.4(7.41—7.43)59200-250hz(率。7.41省略了2p1.07.42在7.41的AD7.43將ADAD:因?yàn)?.417.42只是7.43的將7.43200-250HZ略2),右ADAD輸入的ADAD7.41P1.0 200 250HZf25dis.asmORG0000HAJMPMAINORG001BHAJMPDIN1MAIN:;定義頻率200和300//////////////////////////////////F2HEQU30H60F2LEQU31HF3HEQU32HF3LEQU33H;/////////////////////////////////////////////////DISFLAGEQU34H;顯示標(biāo)志DISLEQU35H;顯示低位DISHEQU36H;顯示高位;定義頻率保持初值//////////////////////////////////MOVR1,#50MOVR2,#02H;//////////////////////////////////////////////////;顯示賦初值////////////////////////////////////////MOVDISFLAG,#00HMOVDISL,#00HMOVDISH,#00H;//////////////////////////////////////////////////;頻率賦初值////////////////////////////////////////MOVF2H,#0F6HMOVF2L,#3BHMOVF3H,#0F8HMOVF3L,#2FH;/////////////////////////////////////////////////CLRP1.0; P1.0MOVTMOD,#00010000B; 1MOVTH1,F2HMOVTL1,F2L;200HZSETBEA;開(kāi)總中斷61SETBTR1;開(kāi)定時(shí)器1SETBET1;開(kāi)定時(shí)器1DISPLAY:MOVSBUF,#00HD1:JNBTI,D1CLRTIMOVSBUF,#00HD2:JNBTI,D2CLRTIMOVA,DISLMOVDPTR,#SETTABMOVCA,@A+DPTRMOVSBUF,AD3:JNBTI,D3CLRTIMOVA,DISHMOVDPTR,#SETTABMOVCA,@A+DPTRMOVSBUF,AD4:JNBTI,D4CLRTIACALLDELAYAJMPDISPLAYLOOP:AJMPLOOPDIN1:CPLP1.0; P1.0p1.0//////////////////////////////////////62DJNZR1,REMOVR1,#50DJNZR2,REMOVR2,#02H;//////////////////////////////////////////////////INCDISFLAGMOVA,DISFLAGCJNEA,#0AH,FFMOVDISFLAG,#00HINCDISLMOVA,DISLCJNEA,#0AH,FFMOVDISL,#00HINCDISH;/////////////////////////////////////////////////FF:MOVA,F2HCJNEA,F3H,XIA; 300HZAJMPJIA; 300HZ 1///////XIA:INCF2LMOVA,F2LCJNEA,#00H,REINCF2HMOVA,F2HCJNEA,F3H,RE;//////////////////////////////////////////////////; 300HZ 300HZ///////////////////JIA:INCF2L; 200HZ 1MOVA,F2LCJNEA,#F3L,RECLRTR1;//////////////////////////////////////////////////RE:MOVTH1,F2HMOVTL1,F2LRETIDELAY:MOVR3,#0FFHD5:DJNZR3,D5RETSETTAB:DB0F

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論