小弟刚开始学单片机,这个延时程序搞不懂,请高手指点.
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
传送参数你用的是30H,这样是不行的,应该用A寄存器,如果A里有数据,可以先将A里的数据放在31H里面,然后,MOVA,#200---下面MOVR7,A就可以了
各位,再看一下这个程序
双字节十进制转化为单字节二进制
BCD低位在BCD1中,高位在BCD0中,
二进制数在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中的不还是双字节
十进制数吗?怎么会是二进制数,请高手指点,
双字节十进制转化为单字节二进制
BCD低位在BCD1中,高位在BCD0中,
二进制数在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中的不还是双字节
十进制数吗?怎么会是二进制数,请高手指点,
0
回复
提示
@henan123
各位,再看一下这个程序双字节十进制转化为单字节二进制BCD低位在BCD1中,高位在BCD0中,二进制数在BIN0中BCD0 EQU 40HBCD1 EQU 41HBIN0 EQU 50HBCD2BIN: MOV A,BCD0 ;将十进树送到A中 MOV B,#10 MUL ABADD A,BCD1MOV BIN0,ARET这是书上的一段程序.小弟有点不明白,最后送往BIN0中的不还是双字节十进制数吗?怎么会是二进制数,请高手指点,
START: JNB P0.1,L1 ;有PG嗎?有PG就進行下一步測試
L1: CLR P1.0 ;3.3V短路RELAY ON
LCALL DELAY ;調用延遲參數
SETB P1.0 ;3.3V短路RELAY OFF
LCALL DELAY ;調用延遲參數
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 ;調用延遲參數
SETB P1.2 ;5V短路RELAY OFF
LCALL DELAY ;調用延遲參數
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 ;調用延遲參數
SETB P1.3 ;12V短路RELAY OFF
LCALL DELAY ;調用延遲參數
LCALL PS ;PS-ON開關啟動
JB P0.1,NG ;有PG嗎?有PG進行下一步測試,沒PG就停止測試,FALL燈亮,蜂鳴器長鳴
JNB P0.1,L4 ;檢測到PG信號,可以進行下一步測試
L4: CLR P0.0 ;切換到輕載測試OVP
LCALL DELAY ;調用延遲參數
CLR P1.4 ;3.3V過壓保護RELAY ON
LCALL DELAY ;調用延遲參數
SETB P1.4 ;3.3V過壓保護RELAY OFF
LCALL DELAY ;調用延遲參數
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 ;調用延遲參數
SETB P1.5 ;5V過壓保護RELAY OFF
LCALL DELAY ;調用延遲參數
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 ;調用延遲參數
SETB P1.6 ;12V過壓保護RELAY OFF
LCALL DELAY ;調用延遲參數
LCALL PS ;PS-ON開關啟動
SETB P0.0 ;切換到重載準備測試OCP
LCALL DELAY ;調用延遲參數
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 ;調用延遲參數
SETB P1.0 ;3.3V短路RELAY OFF
LCALL DELAY ;調用延遲參數
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 ;調用延遲參數
SETB P1.2 ;5V短路RELAY OFF
LCALL DELAY ;調用延遲參數
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 ;調用延遲參數
SETB P1.3 ;12V短路RELAY OFF
LCALL DELAY ;調用延遲參數
LCALL PS ;PS-ON開關啟動
JB P0.1,NG ;有PG嗎?有PG進行下一步測試,沒PG就停止測試,FALL燈亮,蜂鳴器長鳴
JNB P0.1,L4 ;檢測到PG信號,可以進行下一步測試
L4: CLR P0.0 ;切換到輕載測試OVP
LCALL DELAY ;調用延遲參數
CLR P1.4 ;3.3V過壓保護RELAY ON
LCALL DELAY ;調用延遲參數
SETB P1.4 ;3.3V過壓保護RELAY OFF
LCALL DELAY ;調用延遲參數
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 ;調用延遲參數
SETB P1.5 ;5V過壓保護RELAY OFF
LCALL DELAY ;調用延遲參數
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 ;調用延遲參數
SETB P1.6 ;12V過壓保護RELAY OFF
LCALL DELAY ;調用延遲參數
LCALL PS ;PS-ON開關啟動
SETB P0.0 ;切換到重載準備測試OCP
LCALL DELAY ;調用延遲參數
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 ;調用延遲參數SETBP1.0 ;3.3V短路RELAYOFFLCALLDELAY ;調用延遲參數LCALLPS ;PS-ON開關啟動JBP0.1,NG ;有PG嗎?有PG進行下一步測試,沒PG就停止測試,FALL燈亮,蜂鳴器長鳴JNBP0.1,L2 ;檢測到PG信號,可以進行下一步測試L2:CLRP1.2 ;5V短路RELAYONLCALLDELAY ;調用延遲參數SETBP1.2 ;5V短路RELAYOFFLCALLDELAY ;調用延遲參數LCALLPS ;PS-ON開關啟動JBP0.1,NG ;有PG嗎?有PG進行下一步測試,沒PG就停止測試,FALL燈亮,蜂鳴器長鳴JNBP0.1,L3 ;檢測到PG信號,可以進行下一步測試L3:CLRP1.3 ;12V短路RELAYONLCALLDELAY ;調用延遲參數SETBP1.3 ;12V短路RELAYOFFLCALLDELAY ;調用延遲參數LCALLPS ;PS-ON開關啟動JBP0.1,NG ;有PG嗎?有PG進行下一步測試,沒PG就停止測試,FALL燈亮,蜂鳴器長鳴JNBP0.1,L4 ;檢測到PG信號,可以進行下一步測試L4:CLRP0.0 ;切換到輕載測試OVPLCALLDELAY ;調用延遲參數CLRP1.4 ;3.3V過壓保護RELAYONLCALLDELAY ;調用延遲參數SETBP1.4 ;3.3V過壓保護RELAYOFFLCALLDELAY ;調用延遲參數LCALLPS ;PS-ON開關啟動JBP0.1,NG ;有PG嗎?有PG進行下一步測試,沒PG就停止測試,FALL燈亮,蜂鳴器長鳴JNBP0.1,L5 ;檢測到PG信號,可以進行下一步測試L5:CLRP1.5 ;5V過壓保護RELAYONLCALLDELAY ;調用延遲參數SETBP1.5 ;5V過壓保護RELAYOFFLCALLDELAY ;調用延遲參數LCALLPS ;PS-ON開關啟動JBP0.1,NG ;有PG嗎?有PG進行下一步測試,沒PG就停止測試,FALL燈亮,蜂鳴器長鳴JNBP0.1,L6 ;檢測到PG信號,可以進行下一步測試L6:CLRP1.6 ;12V過壓保護RELAYONLCALLDELAY ;調用延遲參數SETBP1.6 ;12V過壓保護RELAYOFFLCALLDELAY ;調用延遲參數LCALLPS ;PS-ON開關啟動SETBP0.0 ;切換到重載準備測試OCPLCALLDELAY ;調用延遲參數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
专业单片机培训:
培训内容如下:
1:培训的单片机有51,EMC,HOLTEK,NTK,SONIX,samsung,PIC
2:汇编语言程序的程序结构,常用的子程序的编写规范.
3:常用的电路的程序编写,如RC测温程序,单片机的I/O做AD转换,软件
生成PWM等.
4:我自己编写了一套单片机汇编语言,适用于各种单片机,以免大家学习多种单片机的
的烦恼,浪费精力和时间.
就C语言一样,不同的单片机C语言的程序都可以用,
只需修改单片机特定的功能,如计数器的配置,AD转换的配置
PWM,I/O口的配置等.修改之后就可以把单片机汇编程序放到任何一种单片机
了.
联系电话,深圳南山.13322927938,QQ:237035124,e_mail: mcu12345@163.com
培训内容如下:
1:培训的单片机有51,EMC,HOLTEK,NTK,SONIX,samsung,PIC
2:汇编语言程序的程序结构,常用的子程序的编写规范.
3:常用的电路的程序编写,如RC测温程序,单片机的I/O做AD转换,软件
生成PWM等.
4:我自己编写了一套单片机汇编语言,适用于各种单片机,以免大家学习多种单片机的
的烦恼,浪费精力和时间.
就C语言一样,不同的单片机C语言的程序都可以用,
只需修改单片机特定的功能,如计数器的配置,AD转换的配置
PWM,I/O口的配置等.修改之后就可以把单片机汇编程序放到任何一种单片机
了.
联系电话,深圳南山.13322927938,QQ:237035124,e_mail: mcu12345@163.com
0
回复
提示