亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? hcanap_1.inc

?? example of using Infineon 81c91 processor.
?? INC
字號:
$EJECT
;=======================================================================
;
;     INCLUDE FILE DES MODULS HCANAPIF.A51
;
;=======================================================================



;*---------------------------------------------------------------------*
;*     C _ E N T E R _ D R I V E R
;*---------------------------------------------------------------------*
;*  Funktion:
;*
;*     Diese Prozedur regelt den Zutritt zum CAN-Treiber.
;*
;* VAR
;*    I : BYTE; (* In Register halten -> reentrant *)
;*
;* (* Diese Routine wird in Assembler implementiert und muss reentrant sein *)
;* BEGIN
;*    Alle Interrupts sperren;
;*    WHILE C_DRIVER_IN_USE DO
;*       (* Der CAN-Treiber ist schon besetzt *)
;*       (* Die Parameter aus den Registern m乻sen gesichert werden *)
;*       IF NOT(C_TEMP_ORDER_BUF[0].OCCUPIED) THEN
;*          I := 0;
;*       ELSIF NOT(C_TEMP_ORDER_BUF[1].OCCUPIED) THEN
;*          I := 1;
;*       ELSIF NOT(C_TEMP_ORDER_BUF[2].OCCUPIED) THEN
;*          I := 2;
;*       ELSE
;*          Alle Interrupts freigeben;
;*          RETURN FALSE;
;*       END IF;
;*       (* Es wurde ein freier tempor剅er Buffer gefunden *)
;*       C_TEMP_ORDER_BUF[I].OCCUPIED := TRUE;
;*
;*       (* R3 bis R7 in C_TEMP_ORDER_BUF[I].DATA kopieren;
;*       C_TEMP_ORDER_BUF[I].DATA[0] := R3;
;*       ..
;*       ..
;*       C_TEMP_ORDER_BUF[I].DATA[4] := R7;
;*       PUSH(I);
;*       C_TEMP_ORDER_BUF[I].TASK_ID := os_get_running_task_id();
;*
;*       WHILE C_DRIVER_IN_USE DO
;*          Alle Interrupts freigeben;
;*          os_wait (K_SIG,0xff,0);
;*          Alle Interrupts sperren;
;*       END;
;*       Alle Interrupts freigeben;
;*       POP(I);
;*       os_clear_signal (C_TEMP_ORDER_BUF[I].TASK_ID);
;*       (* C_TEMP_ORDER_BUF[I].DATA in R3 bis R7 kopieren *)
;*       R3 := C_TEMP_ORDER_BUF[I].DATA[0];
;*       ..
;*       R7 := C_TEMP_ORDER_BUF[I].DATA[4];
;*
;*       Alle Interrupts sperren;
;*       C_TEMP_ORDER_BUF.OCCUPIED := FALSE;
;*    END WHILE;
;*    C_DRIVER_IN_USE := TRUE;
;*    Alle Interrupts freigeben;
;*    RETURN TRUE;
;* END C_ENTER_DRIVER;
;*
;*---------------------------------------------------------------------*
;*  Parameter:
;*
;*  Returnwert im AKKU :
;*          TRUE  --> Alles OK, Task darf CAN-Treiber benutzen
;*          FALSE --> Fehlfunktion, zuviele Tasks warten
;*                    (Fatal-Error)
;*
;*---------------------------------------------------------------------*/

?CAN?C_ENTER_DRIVER?HCANAPIF     SEGMENT CODE
                                 RSEG    ?CAN?C_ENTER_DRIVER?HCANAPIF


C_ENTER_DRIVER:         CLR EA                  ; Alle Interrupts sperren

                     ; WHILE C_DRIVER_IN_USE DO;
CE_WHILE:               JB      C_DRIVER_IN_USE, CE_1
                        JMP     CE_WHILE_END

CE_1:                   ; freien Buffer suchen und Register R3 bis R7 sichern
                        MOV     DPTR, #C_TEMP_BUF_0_OCC
                        MOVX    A, @DPTR
                        CJNE    A,#FALSE, CE_IF1
                        ; Buffer 0
                        MOV     R0, #0          ; Den verwendeten Buffer merken
                        MOV     A, #TRUE        ; Buffer reservieren
                        MOVX    @DPTR, A
                        ; Register R3 bis R7 sichern
                        STORE_REGS  C_TEMP_BUF_0_DATA
                        MOV     A, R0
                        PUSH    ACC             ; Buffer Index retten
                        CALL    os_running_task_id
                        MOV     A, R7
                        MOV     DPTR, #C_TEMP_BUF_0_ID
                        MOVX    @DPTR, A        ; RUNNING_TASK_ID abspeichern
                        SETB    EA              ; Interrupts freigeben
                        JMP     CE_IF_END

CE_IF1:                 MOV     DPTR, #C_TEMP_BUF_1_OCC
                        MOVX    A, @DPTR
                        CJNE    A, #FALSE, CE_IF2
                        ; Buffer 1
                        MOV     R0, #1          ; Den verwendeten Buffer merken
                        MOV     A, #TRUE        ; Buffer reservieren
                        MOVX    @DPTR, A
                        ; Register R3 bis R7 sichern
                        STORE_REGS C_TEMP_BUF_1_DATA
                        MOV     A, R0
                        PUSH    ACC             ; Buffer Index retten
                        CALL    os_running_task_id
                        MOV     A, R7
                        MOV     DPTR, #C_TEMP_BUF_1_ID
                        MOVX    @DPTR, A        ; RUNNING_TASK_ID abspeichern
                        SETB    EA              ; Interrupts freigeben
                        JMP     CE_IF_END

CE_IF2:                 MOV     DPTR, #C_TEMP_BUF_2_OCC
                        MOVX    A, @DPTR
                        CJNE    A, #FALSE, CE_ELSE1
                        ; Buffer 2
                        MOV     R0, #2          ; Den verwendeten Buffer merken
                        MOV     A, #TRUE        ; Buffer reservieren
                        MOVX    @DPTR,A
                        ; Register R3 bis R7 sichern
                        STORE_REGS C_TEMP_BUF_2_DATA
                        MOV     A, R0
                        PUSH    ACC             ; Buffer Index retten
                        CALL    os_running_task_id
                        MOV     A, R7
                        MOV     DPTR, #C_TEMP_BUF_2_ID
                        MOVX    @DPTR, A        ; RUNNING_TASK_ID abspeichern
                        SETB    EA              ; Interrupts freigeben
                        JMP     CE_IF_END

CE_ELSE1:               ; Keinen Buffer gefunden --> Fatal Error
                        SETB    EA              ; Interrupts freigeben
                        MOV     A,#FALSE
                        RET

CE_IF_END:              ; Register gerettet, nun auf Signal warten, bis
                        ; CAN-Treiber frei ist
                        CLR     EA              ; Alle Interrupts sperren

CE_W:                   JNB     C_DRIVER_IN_USE, CE_E_W
                        SETB    EA              ; Interrupts freigeben
                        MOV     R7, #K_SIG      ; warten auf Signal
                        CALL    _os_wait
                        CLR     EA              ; Alle Interrupts sperren
                        JMP     CE_W

CE_E_W:                 SETB    EA              ; Interrupts freigeben
                        POP     ACC
                        MOV     R0,A

                        ; Register aus dem verwendeten Buffer zur乧kladen
                        CJNE    R0,#0,CE_B1
                        MOV     DPTR, #C_TEMP_BUF_0_ID
                        MOVX    A, @DPTR
                        MOV     R7, A
                        CALL    _os_clear_signal
                        RESTORE_REGS C_TEMP_BUF_0_DATA
                        MOV     DPTR, #C_TEMP_BUF_0_OCC
                        MOV     A, #FALSE
                        CLR     EA
                        MOVX    @DPTR, A
                        JMP     CE_2
CE_B1:                  CJNE    R0,#1,CE_B2
                        MOV     DPTR, #C_TEMP_BUF_1_ID
                        MOVX    A, @DPTR
                        MOV     R7, A
                        CALL    _os_clear_signal
                        RESTORE_REGS C_TEMP_BUF_1_DATA
                        MOV     DPTR, #C_TEMP_BUF_1_OCC
                        MOV     A, #FALSE
                        CLR     EA
                        MOVX    @DPTR, A
                        JMP     CE_2
CE_B2:                  MOV     DPTR, #C_TEMP_BUF_2_ID
                        MOVX    A, @DPTR
                        MOV     R7, A
                        CALL    _os_clear_signal
                        RESTORE_REGS C_TEMP_BUF_2_DATA
                        MOV     DPTR, #C_TEMP_BUF_2_OCC
                        MOV     A, #FALSE
                        CLR     EA
                        MOVX    @DPTR, A
CE_2:                   JMP     CE_WHILE

                     ; END WHILE

CE_WHILE_END:        ; Der CAN-Treiber darf benutzt werden
                        SETB    C_DRIVER_IN_USE
                        SETB    EA             ; Interrupts freigeben
                        MOV     A,#TRUE
                        RET



$EJECT
;*---------------------------------------------------------------------*
;*     C _ L E A V E _ D R I V E R
;*---------------------------------------------------------------------*
;*  Funktion:
;*
;*     Mit dieser Funktion wird der CAN-Treiber wieder freigegeben.
;*
;* (* Diese Routine wird in Assembler implementiert und muss reentrant sein *)
;* BEGIN
;*    Alle Interrupts sperren;
;*    C_DRIVER_IN_USE := FALSE;
;*
;*    (* Wartenden Task suchen und starten *)
;*    IF C_TEMP_ORDER_BUF[0].OCCUPIED THEN
;*       Alle Interrupts freigeben;
;*       os_send_signal (C_TEMP_ORDER_BUF[0].TASK_ID);
;*    ELSIF C_TEMP_ORDER_BUF[1].OCCUPIED THEN
;*       Alle Interrupts freigeben;
;*       os_send_signal (C_TEMP_ORDER_BUF[1].TASK_ID);
;*    ELSIF C_TEMP_ORDER_BUF[2].OCCUPIED THEN
;*       Alle Interrupts freigeben;
;*       os_send_signal (C_TEMP_ORDER_BUF[2].TASK_ID);
;*    END IF;
;*    Alle Interrupts freigeben;
;* END C_LEAVE_DRIVER;
;*
;*---------------------------------------------------------------------*
;*  Parameter:
;*
;*     --
;*
;*---------------------------------------------------------------------*/

?CAN?C_LEAVE_DRIVER?HCANAPIF     SEGMENT CODE
                        RSEG     ?CAN?C_LEAVE_DRIVER?HCANAPIF


C_LEAVE_DRIVER:         CLR     EA              ; Alle Interrupts sperren
                        CLR     C_DRIVER_IN_USE
                        ; Wartenden Task suchen und starten
                        MOV     DPTR, #C_TEMP_BUF_0_OCC
                        MOVX    A, @DPTR
                        CJNE    A, #TRUE, CL_1
                        MOV     DPTR, #C_TEMP_BUF_0_ID
                        MOVX    A, @DPTR
                        SETB    EA              ; Interrupts freigeben
                        MOV     R7, A
                        CALL    _os_send_signal
                        JMP     CL_3
CL_1:                   MOV     DPTR, #C_TEMP_BUF_1_OCC
                        MOVX    A, @DPTR
                        CJNE    A, #TRUE, CL_2
                        MOV     DPTR, #C_TEMP_BUF_1_ID
                        MOVX    A, @DPTR
                        SETB    EA              ; Interrupts freigeben
                        MOV     R7, A
                        CALL    _os_send_signal
                        JMP     CL_3
CL_2:                   MOV     DPTR, #C_TEMP_BUF_2_OCC
                        MOVX    A, @DPTR
                        CJNE    A, #TRUE, CL_3
                        MOV     DPTR, #C_TEMP_BUF_2_ID
                        MOVX    A, @DPTR
                        SETB    EA              ; Interrupts freigeben
                        MOV     R7, A
                        CALL    _os_send_signal

CL_3:                   SETB    EA             ; Interrupts freigeben
                        RET

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
韩国毛片一区二区三区| 亚洲人妖av一区二区| 欧美日韩国产区一| 91福利视频在线| 91在线观看地址| 91浏览器打开| 欧洲在线/亚洲| 欧美日韩一区不卡| 欧美丰满一区二区免费视频 | 91麻豆精品国产自产在线| 在线这里只有精品| 欧美日韩美少妇| 日韩欧美精品三级| 久久久国产午夜精品| 国产精品每日更新| 亚洲欧美日韩国产手机在线| 亚洲影视在线播放| 日韩福利电影在线| 国产又黄又大久久| 91在线国产福利| 欧美少妇bbb| 精品捆绑美女sm三区| 亚洲精品免费在线观看| 亚洲黄色免费电影| 蜜臀精品久久久久久蜜臀| 国产麻豆日韩欧美久久| 91网站视频在线观看| 7777精品伊人久久久大香线蕉超级流畅| 这里只有精品电影| 国产精品人成在线观看免费| 亚洲一区在线观看免费 | 欧美成人精品福利| 国产精品天美传媒| 午夜激情一区二区| 国产成人在线观看免费网站| 欧美综合在线视频| 久久久久亚洲蜜桃| 午夜精品久久久久久久| 高清视频一区二区| 欧美喷潮久久久xxxxx| 国产精品视频看| 日韩国产高清在线| 色综合久久88色综合天天6| 精品伦理精品一区| 亚洲国产日韩a在线播放性色| 精品一区二区在线看| 色老汉av一区二区三区| 久久亚洲春色中文字幕久久久| 一区av在线播放| 成人性生交大片免费看在线播放| 欧美精品久久99久久在免费线| 国产精品久久久久久亚洲毛片| 免费久久精品视频| 久久女同精品一区二区| 亚洲综合色自拍一区| 国产99久久久国产精品潘金 | 久久99久久99小草精品免视看| 99re这里都是精品| 久久精品人人做| 日本不卡一区二区| 欧美日韩在线播放三区四区| 国产精品麻豆欧美日韩ww| 九色|91porny| 欧美一级二级三级乱码| 亚洲一区二区视频| 91亚洲国产成人精品一区二区三| 国产丝袜欧美中文另类| 韩国中文字幕2020精品| 91精品免费在线观看| 亚洲电影一区二区| 欧美主播一区二区三区美女| 亚洲品质自拍视频网站| 99视频精品在线| 中文字幕一区二区不卡| 成人aa视频在线观看| 日本一区二区在线不卡| 国产精品白丝jk黑袜喷水| 精品久久一二三区| 黄色资源网久久资源365| 欧美v国产在线一区二区三区| 蜜桃一区二区三区四区| 欧美一区二区三区免费大片| 日本午夜精品一区二区三区电影| 欧美日韩一区二区电影| 成人高清视频在线观看| 中文字幕第一区第二区| 91在线视频观看| 一区二区三区四区在线免费观看 | 精品一区二区三区在线播放视频| 91精品国产美女浴室洗澡无遮挡| 日韩av中文字幕一区二区三区 | 久久不见久久见免费视频7| 日韩欧美国产麻豆| 国产二区国产一区在线观看| 国产精品乱码一区二区三区软件| 成人性色生活片免费看爆迷你毛片| 国产精品久久久久久久久免费相片 | 亚洲国产一区二区三区青草影视| 欧美日韩免费视频| 久久精品国产99国产精品| 久久一日本道色综合| 成人黄色软件下载| 精品午夜久久福利影院| 国产免费久久精品| 日本伦理一区二区| 美女免费视频一区| 国产精品理伦片| 欧美高清视频在线高清观看mv色露露十八| 日本网站在线观看一区二区三区| 久久久久久毛片| 欧美中文字幕一区二区三区亚洲| 蜜桃视频第一区免费观看| 国产精品视频你懂的| 欧美日韩国产高清一区二区| 极品瑜伽女神91| 亚洲精品国产一区二区精华液| 91精品国产综合久久精品麻豆 | 1区2区3区欧美| 日韩写真欧美这视频| 成人福利在线看| 日本不卡一区二区三区| 亚洲视频一二三| 精品久久久三级丝袜| 欧美性极品少妇| 成人国产精品免费| 奇米影视一区二区三区小说| 亚洲激情av在线| 中文字幕va一区二区三区| 欧美一区二区视频网站| 91成人免费在线| 99久久久精品免费观看国产蜜| 久久成人麻豆午夜电影| 午夜激情久久久| 亚洲人成网站在线| 欧美激情在线一区二区三区| 日韩一区二区三区免费观看| 欧美在线|欧美| av在线一区二区| 国产99久久久精品| 激情欧美一区二区三区在线观看| 亚洲在线视频免费观看| 亚洲图片你懂的| 欧美激情一区二区三区不卡| 欧美大片国产精品| 欧美精品 日韩| 欧美精三区欧美精三区| 91久久线看在观草草青青| 色综合夜色一区| 91影视在线播放| 色综合网站在线| 欧美熟乱第一页| 色女孩综合影院| 在线视频中文字幕一区二区| 色狠狠一区二区三区香蕉| 成人av午夜影院| 波多野结衣在线一区| 国产高清视频一区| 国产福利不卡视频| 国产成人免费视频| 国产成人免费网站| 成人国产一区二区三区精品| 成人伦理片在线| 9色porny自拍视频一区二区| 成人av在线播放网址| 色诱亚洲精品久久久久久| 在线视频国内一区二区| 欧美高清性hdvideosex| 26uuu色噜噜精品一区| 国产婷婷色一区二区三区四区| 中文字幕高清不卡| 亚洲丝袜制服诱惑| 天天色天天操综合| 狠狠色伊人亚洲综合成人| 国产一区二区精品在线观看| 国产成人免费av在线| 一本到一区二区三区| 欧美群妇大交群中文字幕| 亚洲欧洲三级电影| 午夜久久久久久| 国内成+人亚洲+欧美+综合在线| 国产91露脸合集magnet | 久久精品国产一区二区三| 国产精品一区二区视频| 色综合色综合色综合| 日韩一区二区三| 亚洲乱码中文字幕| 捆绑紧缚一区二区三区视频| 国产成人亚洲精品青草天美| 色综合久久久久网| 欧美成人免费网站| 综合在线观看色| 美女视频网站久久| 91丨国产丨九色丨pron| 日韩精品影音先锋| 中文字幕在线观看不卡| 全部av―极品视觉盛宴亚洲| www.色综合.com| 26uuu精品一区二区| 午夜亚洲国产au精品一区二区| 国产伦精品一区二区三区在线观看|