小弟剛開(kāi)始學(xué)單片機(jī),這個(gè)延時(shí)程序搞不懂,請(qǐng)高手指點(diǎn).
MAIN: SETB P1.0
MOV 30H,#255
LCALL DELAY
CLR P1.0
MOV 30H,#200
LCALL DELAY
AJMP MAIN
DELAY: MOV R7,30H
D1: MOV R6,#250
D2: MOV R1,#200
D3: DJNZ R1,D3
DJNZ R6,D2
DJNZ R7,D1
RET
END
這個(gè)程序?yàn)槭裁床恍心?請(qǐng)高手指點(diǎn)
匯編高手請(qǐng)進(jìn)
全部回復(fù)(20)
正序查看
倒序查看
@hugang9999
傳送參數(shù)你用的是30H,這樣是不行的,應(yīng)該用A寄存器,如果A里有數(shù)據(jù),可以先將A里的數(shù)據(jù)放在31H里面,然后,MOVA,#200---下面MOVR7,A就可以了
各位,再看一下這個(gè)程序
雙字節(jié)十進(jìn)制轉(zhuǎn)化為單字節(jié)二進(jìn)制
BCD低位在BCD1中,高位在BCD0中,
二進(jìn)制數(shù)在BIN0中
BCD0 EQU 40H
BCD1 EQU 41H
BIN0 EQU 50H
BCD2BIN:
MOV A,BCD0 ;將十進(jìn)樹(shù)送到A中
MOV B,#10
MUL AB
ADD A,BCD1
MOV BIN0,A
RET
這是書(shū)上的一段程序.小弟有點(diǎn)不明白,最后送往BIN0中的不還是雙字節(jié)
十進(jìn)制數(shù)嗎?怎么會(huì)是二進(jìn)制數(shù),請(qǐng)高手指點(diǎn),
雙字節(jié)十進(jìn)制轉(zhuǎn)化為單字節(jié)二進(jìn)制
BCD低位在BCD1中,高位在BCD0中,
二進(jìn)制數(shù)在BIN0中
BCD0 EQU 40H
BCD1 EQU 41H
BIN0 EQU 50H
BCD2BIN:
MOV A,BCD0 ;將十進(jìn)樹(shù)送到A中
MOV B,#10
MUL AB
ADD A,BCD1
MOV BIN0,A
RET
這是書(shū)上的一段程序.小弟有點(diǎn)不明白,最后送往BIN0中的不還是雙字節(jié)
十進(jìn)制數(shù)嗎?怎么會(huì)是二進(jìn)制數(shù),請(qǐng)高手指點(diǎn),
0
回復(fù)
@henan123
各位,再看一下這個(gè)程序雙字節(jié)十進(jìn)制轉(zhuǎn)化為單字節(jié)二進(jìn)制BCD低位在BCD1中,高位在BCD0中,二進(jìn)制數(shù)在BIN0中BCD0 EQU 40HBCD1 EQU 41HBIN0 EQU 50HBCD2BIN: MOV A,BCD0 ;將十進(jìn)樹(shù)送到A中 MOV B,#10 MUL ABADD A,BCD1MOV BIN0,ARET這是書(shū)上的一段程序.小弟有點(diǎn)不明白,最后送往BIN0中的不還是雙字節(jié)十進(jìn)制數(shù)嗎?怎么會(huì)是二進(jìn)制數(shù),請(qǐng)高手指點(diǎn),
START: JNB P0.1,L1 ;有PG嗎?有PG就進(jìn)行下一步測(cè)試
L1: CLR P1.0 ;3.3V短路RELAY ON
LCALL DELAY ;調(diào)用延遲參數(shù)
SETB P1.0 ;3.3V短路RELAY OFF
LCALL DELAY ;調(diào)用延遲參數(shù)
LCALL PS ;PS-ON開(kāi)關(guān)啟動(dòng)
JB P0.1,NG ;有PG嗎?有PG進(jìn)行下一步測(cè)試,沒(méi)PG就停止測(cè)試,FALL燈亮,蜂鳴器長(zhǎng)鳴
JNB P0.1,L2 ;檢測(cè)到PG信號(hào),可以進(jìn)行下一步測(cè)試
L2: CLR P1.2 ;5V短路RELAY ON
LCALL DELAY ;調(diào)用延遲參數(shù)
SETB P1.2 ;5V短路RELAY OFF
LCALL DELAY ;調(diào)用延遲參數(shù)
LCALL PS ;PS-ON開(kāi)關(guān)啟動(dòng)
JB P0.1,NG ;有PG嗎?有PG進(jìn)行下一步測(cè)試,沒(méi)PG就停止測(cè)試,FALL燈亮,蜂鳴器長(zhǎng)鳴
JNB P0.1,L3 ;檢測(cè)到PG信號(hào),可以進(jìn)行下一步測(cè)試
L3: CLR P1.3 ;12V短路RELAY ON
LCALL DELAY ;調(diào)用延遲參數(shù)
SETB P1.3 ;12V短路RELAY OFF
LCALL DELAY ;調(diào)用延遲參數(shù)
LCALL PS ;PS-ON開(kāi)關(guān)啟動(dòng)
JB P0.1,NG ;有PG嗎?有PG進(jìn)行下一步測(cè)試,沒(méi)PG就停止測(cè)試,FALL燈亮,蜂鳴器長(zhǎng)鳴
JNB P0.1,L4 ;檢測(cè)到PG信號(hào),可以進(jìn)行下一步測(cè)試
L4: CLR P0.0 ;切換到輕載測(cè)試OVP
LCALL DELAY ;調(diào)用延遲參數(shù)
CLR P1.4 ;3.3V過(guò)壓保護(hù)RELAY ON
LCALL DELAY ;調(diào)用延遲參數(shù)
SETB P1.4 ;3.3V過(guò)壓保護(hù)RELAY OFF
LCALL DELAY ;調(diào)用延遲參數(shù)
LCALL PS ;PS-ON開(kāi)關(guān)啟動(dòng)
JB P0.1,NG ;有PG嗎?有PG進(jìn)行下一步測(cè)試,沒(méi)PG就停止測(cè)試,FALL燈亮,蜂鳴器長(zhǎng)鳴
JNB P0.1,L5 ;檢測(cè)到PG信號(hào),可以進(jìn)行下一步測(cè)試
L5: CLR P1.5 ;5V過(guò)壓保護(hù)RELAY ON
LCALL DELAY ;調(diào)用延遲參數(shù)
SETB P1.5 ;5V過(guò)壓保護(hù)RELAY OFF
LCALL DELAY ;調(diào)用延遲參數(shù)
LCALL PS ;PS-ON開(kāi)關(guān)啟動(dòng)
JB P0.1,NG ;有PG嗎?有PG進(jìn)行下一步測(cè)試,沒(méi)PG就停止測(cè)試,FALL燈亮,蜂鳴器長(zhǎng)鳴
JNB P0.1,L6 ;檢測(cè)到PG信號(hào),可以進(jìn)行下一步測(cè)試
L6: CLR P1.6 ;12V過(guò)壓保護(hù)RELAY ON
LCALL DELAY ;調(diào)用延遲參數(shù)
SETB P1.6 ;12V過(guò)壓保護(hù)RELAY OFF
LCALL DELAY ;調(diào)用延遲參數(shù)
LCALL PS ;PS-ON開(kāi)關(guān)啟動(dòng)
SETB P0.0 ;切換到重載準(zhǔn)備測(cè)試OCP
LCALL DELAY ;調(diào)用延遲參數(shù)
JB P0.1,NG ;有PG嗎?有PG進(jìn)行下一步測(cè)試,沒(méi)PG就停止測(cè)試,FALL燈亮,蜂鳴器長(zhǎng)鳴
JNB P0.1,PASS ;檢測(cè)到PG信號(hào),可以進(jìn)行下一步測(cè)試,PASS燈亮,進(jìn)入自動(dòng)脫P(yáng)IN程序
PASS: CLR P0.2 ;PASS燈亮并拖PIN
DELAY: MOV R5,#40 ;延時(shí)時(shí)間0.4S
D1: MOV R6,#20
D2: MOV R7,#248
DJNZ R7,$
DJNZ R6,D2
DJNZ R5,D1
RET
PS: CLR P1.1 ;位向反
LCALL DELAY ;調(diào)用延遲
SETB P1.1 ;位向復(fù)位
RET
NG: CLR P1.7 ;位向反
RET
END
L1: CLR P1.0 ;3.3V短路RELAY ON
LCALL DELAY ;調(diào)用延遲參數(shù)
SETB P1.0 ;3.3V短路RELAY OFF
LCALL DELAY ;調(diào)用延遲參數(shù)
LCALL PS ;PS-ON開(kāi)關(guān)啟動(dòng)
JB P0.1,NG ;有PG嗎?有PG進(jìn)行下一步測(cè)試,沒(méi)PG就停止測(cè)試,FALL燈亮,蜂鳴器長(zhǎng)鳴
JNB P0.1,L2 ;檢測(cè)到PG信號(hào),可以進(jìn)行下一步測(cè)試
L2: CLR P1.2 ;5V短路RELAY ON
LCALL DELAY ;調(diào)用延遲參數(shù)
SETB P1.2 ;5V短路RELAY OFF
LCALL DELAY ;調(diào)用延遲參數(shù)
LCALL PS ;PS-ON開(kāi)關(guān)啟動(dòng)
JB P0.1,NG ;有PG嗎?有PG進(jìn)行下一步測(cè)試,沒(méi)PG就停止測(cè)試,FALL燈亮,蜂鳴器長(zhǎng)鳴
JNB P0.1,L3 ;檢測(cè)到PG信號(hào),可以進(jìn)行下一步測(cè)試
L3: CLR P1.3 ;12V短路RELAY ON
LCALL DELAY ;調(diào)用延遲參數(shù)
SETB P1.3 ;12V短路RELAY OFF
LCALL DELAY ;調(diào)用延遲參數(shù)
LCALL PS ;PS-ON開(kāi)關(guān)啟動(dòng)
JB P0.1,NG ;有PG嗎?有PG進(jìn)行下一步測(cè)試,沒(méi)PG就停止測(cè)試,FALL燈亮,蜂鳴器長(zhǎng)鳴
JNB P0.1,L4 ;檢測(cè)到PG信號(hào),可以進(jìn)行下一步測(cè)試
L4: CLR P0.0 ;切換到輕載測(cè)試OVP
LCALL DELAY ;調(diào)用延遲參數(shù)
CLR P1.4 ;3.3V過(guò)壓保護(hù)RELAY ON
LCALL DELAY ;調(diào)用延遲參數(shù)
SETB P1.4 ;3.3V過(guò)壓保護(hù)RELAY OFF
LCALL DELAY ;調(diào)用延遲參數(shù)
LCALL PS ;PS-ON開(kāi)關(guān)啟動(dòng)
JB P0.1,NG ;有PG嗎?有PG進(jìn)行下一步測(cè)試,沒(méi)PG就停止測(cè)試,FALL燈亮,蜂鳴器長(zhǎng)鳴
JNB P0.1,L5 ;檢測(cè)到PG信號(hào),可以進(jìn)行下一步測(cè)試
L5: CLR P1.5 ;5V過(guò)壓保護(hù)RELAY ON
LCALL DELAY ;調(diào)用延遲參數(shù)
SETB P1.5 ;5V過(guò)壓保護(hù)RELAY OFF
LCALL DELAY ;調(diào)用延遲參數(shù)
LCALL PS ;PS-ON開(kāi)關(guān)啟動(dòng)
JB P0.1,NG ;有PG嗎?有PG進(jìn)行下一步測(cè)試,沒(méi)PG就停止測(cè)試,FALL燈亮,蜂鳴器長(zhǎng)鳴
JNB P0.1,L6 ;檢測(cè)到PG信號(hào),可以進(jìn)行下一步測(cè)試
L6: CLR P1.6 ;12V過(guò)壓保護(hù)RELAY ON
LCALL DELAY ;調(diào)用延遲參數(shù)
SETB P1.6 ;12V過(guò)壓保護(hù)RELAY OFF
LCALL DELAY ;調(diào)用延遲參數(shù)
LCALL PS ;PS-ON開(kāi)關(guān)啟動(dòng)
SETB P0.0 ;切換到重載準(zhǔn)備測(cè)試OCP
LCALL DELAY ;調(diào)用延遲參數(shù)
JB P0.1,NG ;有PG嗎?有PG進(jìn)行下一步測(cè)試,沒(méi)PG就停止測(cè)試,FALL燈亮,蜂鳴器長(zhǎng)鳴
JNB P0.1,PASS ;檢測(cè)到PG信號(hào),可以進(jìn)行下一步測(cè)試,PASS燈亮,進(jìn)入自動(dòng)脫P(yáng)IN程序
PASS: CLR P0.2 ;PASS燈亮并拖PIN
DELAY: MOV R5,#40 ;延時(shí)時(shí)間0.4S
D1: MOV R6,#20
D2: MOV R7,#248
DJNZ R7,$
DJNZ R6,D2
DJNZ R5,D1
RET
PS: CLR P1.1 ;位向反
LCALL DELAY ;調(diào)用延遲
SETB P1.1 ;位向復(fù)位
RET
NG: CLR P1.7 ;位向反
RET
END
0
回復(fù)
@liwanli
START:JNBP0.1,L1 ;有PG嗎?有PG就進(jìn)行下一步測(cè)試L1:CLRP1.0 ;3.3V短路RELAYONLCALLDELAY ;調(diào)用延遲參數(shù)SETBP1.0 ;3.3V短路RELAYOFFLCALLDELAY ;調(diào)用延遲參數(shù)LCALLPS ;PS-ON開(kāi)關(guān)啟動(dòng)JBP0.1,NG ;有PG嗎?有PG進(jìn)行下一步測(cè)試,沒(méi)PG就停止測(cè)試,FALL燈亮,蜂鳴器長(zhǎng)鳴JNBP0.1,L2 ;檢測(cè)到PG信號(hào),可以進(jìn)行下一步測(cè)試L2:CLRP1.2 ;5V短路RELAYONLCALLDELAY ;調(diào)用延遲參數(shù)SETBP1.2 ;5V短路RELAYOFFLCALLDELAY ;調(diào)用延遲參數(shù)LCALLPS ;PS-ON開(kāi)關(guān)啟動(dòng)JBP0.1,NG ;有PG嗎?有PG進(jìn)行下一步測(cè)試,沒(méi)PG就停止測(cè)試,FALL燈亮,蜂鳴器長(zhǎng)鳴JNBP0.1,L3 ;檢測(cè)到PG信號(hào),可以進(jìn)行下一步測(cè)試L3:CLRP1.3 ;12V短路RELAYONLCALLDELAY ;調(diào)用延遲參數(shù)SETBP1.3 ;12V短路RELAYOFFLCALLDELAY ;調(diào)用延遲參數(shù)LCALLPS ;PS-ON開(kāi)關(guān)啟動(dòng)JBP0.1,NG ;有PG嗎?有PG進(jìn)行下一步測(cè)試,沒(méi)PG就停止測(cè)試,FALL燈亮,蜂鳴器長(zhǎng)鳴JNBP0.1,L4 ;檢測(cè)到PG信號(hào),可以進(jìn)行下一步測(cè)試L4:CLRP0.0 ;切換到輕載測(cè)試OVPLCALLDELAY ;調(diào)用延遲參數(shù)CLRP1.4 ;3.3V過(guò)壓保護(hù)RELAYONLCALLDELAY ;調(diào)用延遲參數(shù)SETBP1.4 ;3.3V過(guò)壓保護(hù)RELAYOFFLCALLDELAY ;調(diào)用延遲參數(shù)LCALLPS ;PS-ON開(kāi)關(guān)啟動(dòng)JBP0.1,NG ;有PG嗎?有PG進(jìn)行下一步測(cè)試,沒(méi)PG就停止測(cè)試,FALL燈亮,蜂鳴器長(zhǎng)鳴JNBP0.1,L5 ;檢測(cè)到PG信號(hào),可以進(jìn)行下一步測(cè)試L5:CLRP1.5 ;5V過(guò)壓保護(hù)RELAYONLCALLDELAY ;調(diào)用延遲參數(shù)SETBP1.5 ;5V過(guò)壓保護(hù)RELAYOFFLCALLDELAY ;調(diào)用延遲參數(shù)LCALLPS ;PS-ON開(kāi)關(guān)啟動(dòng)JBP0.1,NG ;有PG嗎?有PG進(jìn)行下一步測(cè)試,沒(méi)PG就停止測(cè)試,FALL燈亮,蜂鳴器長(zhǎng)鳴JNBP0.1,L6 ;檢測(cè)到PG信號(hào),可以進(jìn)行下一步測(cè)試L6:CLRP1.6 ;12V過(guò)壓保護(hù)RELAYONLCALLDELAY ;調(diào)用延遲參數(shù)SETBP1.6 ;12V過(guò)壓保護(hù)RELAYOFFLCALLDELAY ;調(diào)用延遲參數(shù)LCALLPS ;PS-ON開(kāi)關(guān)啟動(dòng)SETBP0.0 ;切換到重載準(zhǔn)備測(cè)試OCPLCALLDELAY ;調(diào)用延遲參數(shù)JBP0.1,NG ;有PG嗎?有PG進(jìn)行下一步測(cè)試,沒(méi)PG就停止測(cè)試,FALL燈亮,蜂鳴器長(zhǎng)鳴JNBP0.1,PASS;檢測(cè)到PG信號(hào),可以進(jìn)行下一步測(cè)試,PASS燈亮,進(jìn)入自動(dòng)脫P(yáng)IN程序PASS:CLRP0.2 ;PASS燈亮并拖PINDELAY:MOVR5,#40 ;延時(shí)時(shí)間0.4SD1:MOVR6,#20D2:MOVR7,#248DJNZR7,$DJNZR6,D2DJNZR5,D1RETPS:CLRP1.1 ;位向反LCALLDELAY ;調(diào)用延遲SETBP1.1 ;位向復(fù)位RETNG:CLRP1.7 ;位向反RETEND
專業(yè)單片機(jī)培訓(xùn):
培訓(xùn)內(nèi)容如下:
1:培訓(xùn)的單片機(jī)有51,EMC,HOLTEK,NTK,SONIX,samsung,PIC
2:匯編語(yǔ)言程序的程序結(jié)構(gòu),常用的子程序的編寫(xiě)規(guī)范.
3:常用的電路的程序編寫(xiě),如RC測(cè)溫程序,單片機(jī)的I/O做AD轉(zhuǎn)換,軟件
生成PWM等.
4:我自己編寫(xiě)了一套單片機(jī)匯編語(yǔ)言,適用于各種單片機(jī),以免大家學(xué)習(xí)多種單片機(jī)的
的煩惱,浪費(fèi)精力和時(shí)間.
就C語(yǔ)言一樣,不同的單片機(jī)C語(yǔ)言的程序都可以用,
只需修改單片機(jī)特定的功能,如計(jì)數(shù)器的配置,AD轉(zhuǎn)換的配置
PWM,I/O口的配置等.修改之后就可以把單片機(jī)匯編程序放到任何一種單片機(jī)
了.
聯(lián)系電話,深圳南山.13322927938,QQ:237035124,e_mail: mcu12345@163.com
培訓(xùn)內(nèi)容如下:
1:培訓(xùn)的單片機(jī)有51,EMC,HOLTEK,NTK,SONIX,samsung,PIC
2:匯編語(yǔ)言程序的程序結(jié)構(gòu),常用的子程序的編寫(xiě)規(guī)范.
3:常用的電路的程序編寫(xiě),如RC測(cè)溫程序,單片機(jī)的I/O做AD轉(zhuǎn)換,軟件
生成PWM等.
4:我自己編寫(xiě)了一套單片機(jī)匯編語(yǔ)言,適用于各種單片機(jī),以免大家學(xué)習(xí)多種單片機(jī)的
的煩惱,浪費(fèi)精力和時(shí)間.
就C語(yǔ)言一樣,不同的單片機(jī)C語(yǔ)言的程序都可以用,
只需修改單片機(jī)特定的功能,如計(jì)數(shù)器的配置,AD轉(zhuǎn)換的配置
PWM,I/O口的配置等.修改之后就可以把單片機(jī)匯編程序放到任何一種單片機(jī)
了.
聯(lián)系電話,深圳南山.13322927938,QQ:237035124,e_mail: mcu12345@163.com
0
回復(fù)