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