ORG 0000H
LJMP MAIN
ORG 0003H
LJMP CANINT0
ORG 000BH
LJMP T0-INTERRUPT
ORG 0100H
MAIN:
MOV R0,#07FH
CLR A
MOV @R0,A
DJNZ R0,$_1
MOV @R0,A
MOV SP,#60H
LCALL SJA1000_INIT0
LCALL DISPLAY_INIT
LCALL T0INIT
SETB PX0
SETB IT0
SETB EX0
SETB ET0
SETB TR0
SETB EA
LOOPER:
JNB RCV_GOOD,LOOPER2
CLR RCV_GOOD
LCALL RCVDATA PRG
LOOPER2:
JNB SEC_FLAG,LOOPER3
CLR SEC_FLAG
LCALL SENDDATA_PRG
LOOPER3:
JNB ERR_FLAG,LOOPER4
CLR ERR_FLAG
LCALL ERR_PRG
LOOPER4:
JNB OVER_FLAG,LOOPER5
CLR OVER_FLAG
LCALL DOVER_PRG
LOOPER5:
JNB DS_ENDLFLAG,LOOPER6
CLR DS_END_FLAG
LCALL DSEND_PRG
LOOPER6:
JNB WUL FLAG,LOOPER7
CLR WUL FLAG
LCALL WOKE_PRG
LOOPER7:
AJMP LOOPER
SJA1000_INIT0:
LCALL CAN_CREATE_COMMUNATION
MOV R7,#12
LCALL CAN_SET_BANDRATE
MOV R7,#0A8H
MOV R6,#0ffH
LCALL CAN_SET_OBJECT
MOV R7,#0AAH
MOV R6,#048H
LCALL CAN_SET_OUTCLK
LCALL CAN_QUIT_RETMODEL
MOV DPTR,# REG_CONTROL
MOV A,#01EH
MOV X @DPTR,A
CLR F0
RET
ERR_PRG:
LCALL CAN_ENTER_RETMODEL
LCALL SJA1000_INIT0
MOV ERROR_STATUS,#0FCH
LCALL DISP_ERROR
RET
DSENDLPRG:
LCALL DISP_OK
RET
RCVDATA_PRG:
MOV R0,#RCV_DATA_BUF1
LCALL CAN_DATA_RECEIVE
MOV R7,#04H
LCALL CAN_CMD_PRG
RET
SENDDATA_PRG:
MOV R0,#SEND_DATA_BUFl
MOV @R0,#0AFH
INC R0
MOV @R0,#08H
MOV A,TEST_DATA
INC R0
MOV @R0,A
MOV R0,#SEND_DATA_BUFl
LCALL CAN_DATA_WRITE
MOV R7,#01
LCALL CAN_CMD_PRG
RET
TO_INIT:
MOV A,TMOD
ANL A,#0F0H
ORL A,#’01H
MOV TMOD,A
MOV TH0,#0FCH
MOV TL0,#066H
MOV 3AH,# 00H
RET
CAN_INT0:
PUSH DPH
PUSH DPL
PUSH PSW
PUSH ACC
MOV DPTR,#REG INTERRUPT
MOV X A,@DPTR
MOV SAVE_INT_INFO,A
JNB ACC.0,CAN_INTl
SETB RCV_GOOD
CAN_INT1:
MOV A,SAVE_INT_INFO
JNB ACC.2,CAN INT2
SETB ERR_FLAG
CAN_INT2:
POP ACC
POP PSW
POP DPL
POP DPH
RETI
TO_INTERRUPT:
PUSH DPH
PUSH DPL
PUSH PSW
PUSH ACC
MOV TH0,#80H
MOV TL0,#26H
LCALL DISPLAY
INC 3AH
MOV A,3AH
CJNE A,#40H,TO_QUIT
MOV 3AH,#00H
SETB SEC_FLAG
INC TEST_DATA
TO_QUIT:
POP ACC
POP PSW
POP DPL
POP DPH
RETI
DISP_ERROR:
MOV R0,#DISPLAYBUFO+1
MOV @R0,#0EH
MOV R0,#DISPLAYBUFO+2
MOV @R0,#l0H
INC R0
MOV A,ERROR_STATUS
ANL A,#0F0H
SWAP A
MOV @R0,A
INC R0
MOV A,ERROR_STATUS
ANL A,# 0FH
MOV @R0,A
RET
DISP_OK:
MOV R0,#DISPLAYBUFO+1
MOV @R0,#11H
MOV R0,#DISPLAYBUFO+2
MOV R0,#l0H
MOV R0,#DISPLAYBUFO+3
MOV A,RCV_DATA_BUF3
ANL A,#0F0H
SWAP A
MOV @R0,A
INC R0
MOV A,RCV_DATA_BUF3
ANL A,#0FH
MOV @R0,A
RET_
$INCLUDE(SJA_CANFunc. ASM)
$include( display_s. inc)
END
CAN_CREATE_COMMUNATION:
MOV DPTR,#REG_TEST
MOV X A,.DPTR
MOV A,#0AAH
MOV X @DPTR,A
SETB F0
MOV X A,.DPTR
CJNE A,#OAAH,CAN_CM_QUIT
MOV A,#055H
MOV X @DPTR,A
MOV X A,@DPTR
CJNE A,#055H,CAN_CM_QUIT
CLR A
MOV X @DPTR,A
CLR F0
CAN_CM_QUIT:
RET
CAN_ENTER_RETMODEL:
MOV DPTR,#REG_CONTROL
MOV X A,@DPTR
ORL A,#01H
MOV X @DPTR,A
CLR DWF0
MOV X DWA,@DPTR
JB ACC.0,CAN_ER_QUIT
SETB F0
CAN_ER_QUIT:
RET
CAN-QUIT-RETMODEL:
MOV DPTR,#REG_CONTROL
MOV X A,@DPTR
ANL A,#OFEH
MOV X @DPTR,A
CLR F0
MOV X A,@DPTR
JNB ACC. 0,CAN_QR_QUIT
SETB F0
CAN_QR_QUIT:
RET
CAN_SET_BANDRATE:
MOV A,R7
CLR CY
SUBB A,#13
SETB F0
JNC CAN_SETBR_QUIT
CLR F0
MOV A,R7
RL A
MOV DPTR,#CAN SETBR
MOV C A,@A+DPTR
MOV R5,A
MOV A,R7
RL A
INC A
MOV C A,@A+DPTR
MOV R6,A
MOV DPTR,# REGLBTR0
MOV A,R5
MOV X . DPTR,A
SETB F0
MOV X A,QDPTR
XRL A,R5
JNZ CAN_SETBR_QUIT
INC DPTR
MOV A,R6
MOV X @DPTR,A
MOV X A,@DPTR
XRL A,R6
JNZ CAN_SETBR_QUIT
CLR F0
CAN_SETBR_QUIT:
RET
CAN_SETBR:
DB 0EFH,0FFH
DB 0D7H,0FFH
DB 0CBH,0FFH
DB 0C5H,0FFH
DB 0C9H,0A9H
DB 0C2H,0FFH
DB 84H,0A7H
DB 82H,025H
DB 01H,045H
DB 01H,025H
DB 01H,012H
DB 00H,025H
DB 00H,012H
CAN_SET_OBJECT:
MOV DPTR,#REG_ACR
MOV A, R7
MOV X @DPTR,A
MOV X A,@DPTR
SETB F0
XRL A,R7
JNZ CAN_SETO_QUIT
CLR F0
INC DPTR
MOV A,R6
MOV X @DPTR,A
MOV X A,DPTR
SETB F0
XRL A,R6
JNZ CAN_SETO_QUIT
CLR F0
CAN_SETO_QUIT:
RET
CAN_SET_OUTCLK:
MOV DPTR,#REG_OCR
MOV A,R7
MOV X @DPTR,A
MOV X A,@ DPTR
SETB F0
XRL A,R7
JNZ CAN_SETOQ_QUIT
CLR F0
MOV DPTR,#REG CDR
MOV A,R6
MOV X @DPTR,A
MOV B,A
MOV X A,@ DPTR
SETB F0
XRL A,R6
JNZ CAN_SETOC_QUIT
CLR F0
CAN_SETOC_QUIT
RET
CAN DATA WRITE:
MOV DPTR,# REG_STATUS
MOV X A,@DPTR
SETB F0
JNB ACC.3,CAN_DW_QUIT
CLR F0
MOV X A,@DPTR
SETB F0
JNB ACC.2,CAN_DW_QUIT
CLR F0
INC R0
MOV A, R0
DEC R0
MOV DPTR,#REG_TxBufferl
JB ACC.4, CAN_WYB
ANL A,#0FH
ADD A,#02H
MOV R7,A
AJMP CAN_WRTXBUF
CAN_WYB:
MOV R7,#02
CAN_WRTXBUF:
MOV A,R0
MOV X . DPTR,A
SETB F0
MOV X A,@DPTR
XRL A,.R0
JNZ CAN_DW_QUIT
CLR F0
INC R0
INC DPTR
DJNZ R7,CAN_WRTXBUF
CAN_DW_QUIT:
RET
CAN_DATA_RECEIVE:
MOV DPTR,井REG_STATUS
MOV X A,@DPTR
SETB F0
JNB ACC.0,CAN_DR_QUIT
CLR F0
MOV DPTR,#REG_RxBuffer2
MOV X A,@DPTR
MOV DPTR,#REG RxBufferl
JB ACC. 4,CAN_RCVYB
ANL A,#0FH
ADD A,# 02H
MOV R7,A
AJMP CAN_RCVDATA
CAN_RCVYB:
MOV R7,#02
CAN_RCVDATA:
MOV X A,.DPTR
MOV @R0,A
INC DPTR
INC R0
DJNZ R7,CAN RCVDATA
CAN_DR_QUIT:
RET
CAN_CMD_PRG:
MOV A,R7
CJNE A,#01,CAN_CMDl
MOV DPTR,#REG COMMAND
MOV X @DPTR,A
CLR F0
RET
CAN_CMDl:
CJNE A,#02,CAN_CMD2
MOV DPTR,#REG STATUS
MOV X A,@DPTR
SETB F0
JB ACC.5,CAN_CMDLQUIT
CLR F0
CAN_CMD_QUIT:
RET
CAN_CMD2:
CJNE #04,CAN CMD3
MOV DPTR,# REG_COMMAND
MOV X @DPTR,A
NOP
NOP
MOV DPTR,#REG STATUS
MOV X A,.DPTR
SETB F0
JB ACC.0,CAN_DB_QUIT
CLR F0
CAN_DB_QUIT:
RET
CAN_CMD3:
CJNE A,#08,CAN_CMD4
MOV DPTR,# REG_COMMAND
MOV X @DPTR,A
NOP
NOP
MOV DPTR,#REG_STATUS
MOV X A,@DPTR
SETB F0
JB ACC.1,CAN_DOVER_QUIT
CLR F0
CAN_DOVER_QUIT:
RET
SCAN CMD4:
CJNE A,#10H,CAN_CMD5
MOV DPTR,#REG_COMMAND
MOV X @DPTR,A
CLR F0
CAN CMD5:
RET
上一篇:單片機雙機點對點通信的主機程序
下一篇:ASCII碼到BCD碼轉換子程序
推薦閱讀
史海拾趣
隨著國內市場的逐步飽和,Crane Connectors公司開始將目光投向國際市場。公司制定了詳細的國際化戰略,包括設立海外分支機構、拓展銷售渠道、加強與國際知名企業的合作等。通過不斷努力,公司的產品逐漸打入歐美、東南亞等地區的電子市場,實現了銷售收入的快速增長。國際化戰略的成功實施,不僅提升了公司的國際影響力,也為公司的長遠發展奠定了堅實的基礎。
為了滿足市場不斷增長的需求,達利凱普在大連市金普新區投資建設了高端電子元器件產業化項目。該項目總用地面積4萬平方米,總建筑面積5.6萬平方米。項目建成后,將實現年產射頻微波瓷介電容器30億只的產能規模,進一步鞏固了公司在行業內的領先地位。同時,該項目的實施也為當地經濟發展注入了新的活力。
Burr-Brown在音頻領域取得了顯著的成就。1957年,公司推出的Model 130成為世界上第一個固態運算放大器(op amp),這一技術在現代高級音頻系統中仍占據核心地位。1982年,公司發布的16位單片數模轉換器(DAC)更是徹底改變了音樂的播放和發行方式,使得音樂可以以高保真度進行復制,并方便地隨身攜帶。Burr-Brown的技術成為優質音頻的代名詞,贏得了廣泛的行業認可。
隨著公司規模的擴大,Burr-Brown開始尋求海外市場的發展。1961年,公司首次進入國際市場,開啟了全球化的發展道路。十年后,英國子公司的設立進一步鞏固了公司在歐洲的市場地位。四年后,日本分公司的創建則標志著Burr-Brown在亞洲市場的深入拓展。到1979年,公司的銷售額已經有50%來自于美國以外的國家,顯示出其強大的國際競爭力。
D1 International Inc公司自創立之初,就專注于技術創新。公司的創始人們深知,在競爭激烈的電子行業中,只有擁有獨特的技術優勢才能立足。因此,他們投入大量資源研發新型電子元器件,其中一款高性能的芯片因其低功耗和高效能,迅速在市場上獲得了認可。這一技術的成功研發,為D1 International Inc公司贏得了第一桶金,也為公司后續的發展奠定了堅實的基礎。
作為一家有社會責任感的企業,D1 International Inc公司始終關注環境保護和可持續發展。公司在生產過程中采取環保措施,減少廢棄物排放,同時積極推廣綠色電子產品。此外,D1 International Inc公司還積極參與社會公益活動,回饋社會,為構建和諧社會貢獻自己的力量。
用短信貓發送單條短信的話沒有問題。。每條發送在5s左右,但是如果是長短信的話(兩條或更多),第一條發送時間是5s,但第二條就會用30s左右。 達人們幫幫小弟吧。剛開始弄這個,郁悶死了。… 查看全部問答∨ |
|
小弟剛剛接觸cshell,現在碰到一個對我來說很難的問題,具體是這樣的: 小弟要寫一個cshell的腳本,用來調用synopsis的vcs仿真并控制其仿真流程。 這一步很簡單,只需要在腳本中執行\"./simv -ucli\"就行 ...… 查看全部問答∨ |
|
大家討論下呢, 應用情境os:wince,app是自己公司開發,也可以提供sdk包給第三方開發, 那如何做到wince和app如何分開呢?怎么做比較合理? 不能像手持設備一樣,就提供個wince的系統,最好能夠把開始鍵和其他系統供功能給屏蔽掉。… 查看全部問答∨ |
打算在ubuntu 8.04下用建一個arm9的交叉編譯環境,從網上搜了一下看到好多方法,不知都要安裝和設置哪些東西,有點暈。^_^ 有的說只安裝一個交叉編譯器cross-3.2.tar.bz2就可以了。 還有的說要: 下載源代碼包: binutils-2. ...… 查看全部問答∨ |
無操作系統,采用定時中斷的方式,現在想讓KL46在每次中斷產生處理完事物后進入低功耗模式, 然后每個中斷喚醒(喚醒后處理事物)。 另外還有一種狀態是當系統進入待機狀態后,切換進入低功耗模式,這個時候不在通過定時器喚醒了, 而是通過ADC ...… 查看全部問答∨ |
本帖最后由 gaon 于 2014-8-16 22:27 編輯 做為了一個新手,對系統的搭建及使用往往會遇到許多問題。 雖然前面各位高手寫了很多的文章,但對于初學者看起來還是有些費勁, 自己在學習時也遇到不少的問題,經高手的指點才完成了搭建的過程。 于 ...… 查看全部問答∨ |