?? test.asm
字號(hào):
;噴墨機(jī)控制板硬件說明:
;一、編程說明
;1、數(shù)據(jù)口(W):端口地址:330H。
; 每次先輸出128BIT共8個(gè)字(WORD)到本端口,再輸出點(diǎn)火,延時(shí)后關(guān)閉點(diǎn)火。
; 這樣完成了一列的打印。
;2、控制口(W):端口地址:332H。
; 其中:BIT0:點(diǎn)火(1:關(guān),0:開)
; BIT1:噴頭通道1片選(0:有效)
; BIT2:噴頭通道2片選(0:有效)
; BIT4:PO0(擴(kuò)展輸出開關(guān)信號(hào)0)
; BIT5:PO1(擴(kuò)展輸出開關(guān)信號(hào)1)
; BIT7:電眼觸發(fā)方向
;3、狀態(tài)口(R):端口地址:332H。
; 其中:BIT0:電眼狀態(tài)(0:沒看到物體,1:已經(jīng)看到物體)
; BIT1:電眼當(dāng)前的實(shí)際狀態(tài)
; BIT2:噴頭通道1片選狀態(tài)(0:有效)
; BIT3:噴頭通道2片選狀態(tài)(0:有效)
; BIT4:PI0(擴(kuò)展輸入開關(guān)信號(hào)0)
; BIT5:PI1(擴(kuò)展輸入開關(guān)信號(hào)1)
; BIT6:PI2(擴(kuò)展輸入開關(guān)信號(hào)2)
; BIT7:發(fā)送狀態(tài)(1:在數(shù)據(jù)發(fā)送中,此時(shí)不可向330H送數(shù)據(jù);0:數(shù)據(jù)發(fā)送完成)
; BIT8:噴頭點(diǎn)火信號(hào)狀態(tài)(0:有效)
;4、同步器(R):端口地址:330H。
; 其中:BIT15~BIT0:同步器脈沖計(jì)數(shù)
;
;二、接頭
;1、J0:PC104總線
;2、J1:同步器接頭
; PIN1:+5V
; PIN2:PI2(擴(kuò)展輸入開關(guān)信號(hào)2)
; PIN3:同步器脈沖輸入
; PIN4:GND
;3、J2:電眼接頭
; PIN1:+12V
; PIN2:電眼信號(hào)
; PIN3:GND
;4、J3:高壓電源
; PIN1:+38~+40V
; PIN2:GND
;5、J4/HJ1:噴頭板連接頭
; PIN1:+35V
; PIN2:第2通道片選
; PIN3:串行數(shù)據(jù)
; PIN4:噴頭復(fù)位
; PIN5:+5V
; PIN6:數(shù)據(jù)同步時(shí)鐘
; PIN7:第1通道片選
; PIN8:噴頭準(zhǔn)備好
; PIN9:點(diǎn)火
; PIN10:1MHz時(shí)鐘
; PIN11:GND
;6、J5:擴(kuò)展輸入輸出
; PIN1:PI1(擴(kuò)展輸入開關(guān)信號(hào)1)
; PIN2:PI0(擴(kuò)展輸入開關(guān)信號(hào)0)
; PIN3:PO1(擴(kuò)展輸出開關(guān)信號(hào)1)
; PIN4:PO0(擴(kuò)展輸出開關(guān)信號(hào)0)
; PIN5:GND
CODE SEGMENT PUBLIC 'CODE'
ASSUME CS:CODE
ORG 100H
START: PUSH CS
POP DS
PUSH CS
POP ES
LEA SI,CTRLWORD
MOV AX,[SI]
MOV BP,AX ;將控制字保存到BP中
READKEY:
MOV AH,1
INT 16H ;讀鍵盤
JZ READSIG
XOR AH,AH
INT 16H
CMP AL,31H ;是“1” 嗎?
JZ S_PRINT ;是,開始打印
CMP AL,1BH ;是“Esc” 嗎?
JNZ READSIG ;不是,讀電眼狀態(tài)
JMP PRGEXIT ;是,退出
READSIG:
MOV DX,332H
IN AX,DX ;讀狀態(tài)口
TEST AX,1 ;測(cè)電眼狀態(tài)
JNZ S_PRINT ;檢測(cè)到開始打印
JMP READKEY
S_PRINT:
MOV DI,50 ;每列延時(shí)
MOV CX,258H ;總列數(shù)
MOV SI,288EH ;圖象地址
STD ;反向取數(shù),正向應(yīng)為CLD
CALL PRINTGRP
JMP READKEY ;重新開始
PRGEXIT:
MOV AH,4CH
INT 21H
CTRLWORD DW 7
;CX=總列數(shù),DS:SI數(shù)據(jù)首址,BP,控制字,DI,列間延時(shí)系數(shù)
;打印輸出
PRINTGRP PROC NEAR
PUSH AX
PUSH BX
PUSH DX
CLI
SENDDATA:
PUSH CX
MOV BH,2 ;每列數(shù)據(jù)分2次送
SENDHALF:
MOV BL,4 ;每次送4個(gè)字
MOV AX,BP
CMP BH,2
JNZ HALF1
AND AX,0FFFDH ;第一次,設(shè)nSS1
JMP HALF0
HALF1:
AND AX,0FFFBH ;第二次,設(shè)nSS2
HALF0:
MOV DX,332H
OUT DX,AX ;開nSS1或開nSS2
SENDLINE:
LODSW ;取點(diǎn)陣
MOV DX,330H
OUT DX,AX ;送點(diǎn)陣到噴頭
MOV CX,150 ;延時(shí)15US系數(shù)
CALL DELAY ;延時(shí)
MOV DX,332H
RETEST:
IN AX,DX ;讀狀態(tài)口
AND AL,80H ;檢查數(shù)據(jù)是否完全送出
JNZ RETEST ;沒完,等待
DEC BL
JNZ SENDLINE ;處理下一字
MOV AX,BP
MOV DX,332H
OUT DX,AX ;半列處理完后關(guān)nSS1和nSS2
DEC BH
JNZ SENDHALF
PUSH DI
POP CX ;延時(shí)系數(shù),根據(jù)需要調(diào)整
CALL DELAY ;延時(shí)
MOV AX,BP
AND AX,0FFFEH ;開點(diǎn)火
MOV DX,332H
OUT DX,AX
MOV CX,50 ;延時(shí)5US系數(shù)
CALL DELAY ;延時(shí)
OR AX,1 ;關(guān)點(diǎn)火
OUT DX,AX
POP CX
LOOP SENDDATA ;處理下一列
STI
POP DX
POP BX
POP AX
PRINTGRP ENDP
;延時(shí)子程序
DELAY PROC NEAR
DELAYS:
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
LOOP DELAYS
RET
DELAY ENDP
CODE ENDS
END START
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -