我用的C196,CH375B,想枚舉打印機(jī)。參照下載的51 C程序改成匯編的。 前面讀出配置符都對(duì)。根據(jù)配置設(shè)置打印機(jī)返回14H。 到了查詢端口狀態(tài)時(shí)(GET_PORT_STASTUS函數(shù))確出錯(cuò): 根據(jù)我在執(zhí)行中間一個(gè)issue_token(DATA階段,準(zhǔn)備接收DATA1)之前的延時(shí)長(zhǎng)短不同(其余issue_token延時(shí)與否無影響,程序別的地方未延時(shí)),從短到長(zhǎng)分別返回端口狀態(tài)是14H,01H,18H,無論有紙無紙。 到底是什么問題? 是不是因?yàn)?96比51快,還需要在哪里延時(shí)? 幫幫忙,急需搞定打印機(jī)啊[Emot]20[/Emot]已經(jīng)停滯辦個(gè)多月了
這是程序 ;**************************************;查詢打印機(jī)端口函數(shù)返回值c GET_PORT_STATUS: ;只支持單向接口 LDB C,#0 LCALL TOGGLE_SEND ;主機(jī)發(fā)送同步控制函數(shù) ;SETUP階段為DATA0
LD COUNT,#AR_DATA ;SETUP數(shù)據(jù),GET_PORT_STATUS LDB A,#0A1H STB A,[COUNT]+ LDB A,#1 STB A,[COUNT]+ LDB A,#0 STB A,[COUNT]+ STB A,[COUNT]+ STB A,[COUNT]+ STB A,[COUNT]+ LDB A,#1 STB A,[COUNT]+ LDB A,#0 STB A,[COUNT] ; LDB C,#8 ;C是長(zhǎng)度 SETUP 數(shù)據(jù),共8字節(jié) LD W5,#AR_data LCALL WR_USB_DATA ;寫數(shù)據(jù)塊函數(shù) SETUP 數(shù)據(jù),共8字節(jié)
LDB C,#0 SHLB C,#4 LDB C,#DEF_USB_PID_setup
LCALL ISSUE_TOKEN
; LCALL DIS_ZERO_16H ;事務(wù)處理函數(shù) LDB C,#1 LCALL TOGGLE_RECV ;主機(jī)接收同步控制函數(shù) DAT階段準(zhǔn)備接受ADATA1 LDB C,#0 SHLB C,#4 ORB C,#DEF_USB_PID_IN lcall delay50ms LCALL ISSUE_TOKEN ;事務(wù)處理函數(shù) ;DATA階段操作成功 LD W5,#AR_data LCALL RD_USB_DATA ;讀數(shù)據(jù)塊函數(shù) 讀出接受到的數(shù)據(jù),通常只有1字節(jié) LDB C,#1 LCALL TOGGLE_SEND ;主機(jī)發(fā)送同步控制函數(shù) ;STATUS階段為DATA1 LDB C,#0 ;C是長(zhǎng)度 發(fā)送0長(zhǎng)度的數(shù)據(jù)說明控制傳輸成功 LD W5,#AR_data LCALL WR_USB_DATA ;寫數(shù)據(jù)塊函數(shù) 發(fā)送0長(zhǎng)度的數(shù)據(jù)說明控制傳輸成功
LDB C,#0 SHLB C,#4 ORB C,#DEF_USB_PID_OUT LCALL ISSUE_TOKEN ;事務(wù)處理函數(shù) LD COUNT,#AR_DATA LDB C,[COUNT]+ ;返回值 PORTEND: RET
這個(gè)問題不是前面和你解釋過了嗎?你怎么還問這個(gè)問題呢?? 至于你說的不能打印的話,這個(gè)你需要問下打印機(jī)廠商,問下他們提供不提供這方面的技術(shù)支持。
問題是我試用了5種不同型號(hào)的打印機(jī),都卡在這一步。難道都是打印機(jī)本身的特性嗎?另外,各位枚舉成功,能正確及時(shí)返回端口狀態(tài)的打印機(jī)型號(hào)到底有哪些?
難道無人能回答嗎?
你自己去看下這個(gè)帖子,看下這個(gè)上面給你的回復(fù): http://m.findthetime.net/bbs/View.asp?S=101&I=37258 至于你說的不能正確回復(fù)狀態(tài),那么你可以自己去看下USB_PRINTF打印協(xié)議,我們是按照USB打印協(xié)議來進(jìn)行操作的,如果都是這個(gè)狀態(tài),那么你去咨詢下打印機(jī)廠商。