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

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

?? modbus.asm

?? c51 單片機平臺寫的MODBUS通訊協議(匯編)
?? ASM
字號:
;***********************************************************************************
;D331點膠機程序號選擇及與運動控制卡通訊控件.
                              ;編制: 洪天長    公司:特盈自動化    日期:06.01.12
                              ;修改:彭鏗      公司:特盈自動化    日期:07.07.19
;晶振選擇11.0592M,采用波特率為19200,誤差為0.00%. 
;系統采用RS232通訊,MODBUS通訊協議,并進行CRC_16校驗,字節不進行奇偶校驗(但有校驗位).
;主程序進行鍵盤掃描并通過查詢方式與運動控制卡通訊.
;定時器T0中斷程序進行LED數碼顯示器的查表掃描顯示及狀態指示燈的掃描顯示.
;***********************************************************************************
   ORG	0000H	              ;
   AJMP	START                 ;跳轉到主程序.  
   ORG 	30H	              ; 
START:NOP          
;系統初始化程序.
INITIALIZE1:MOV	TMOD,#20H     ;定時器T1工作于方式2,可自動重載8位串口用.
   MOV 	TH1,#0FDH             ;---------------串口波特率設定為19200-----------------
   MOV   TL1,#0FDH            ;
   MOV 	PCON,#80H   	      ;波特率翻倍.
   MOV 	SCON,#0DCH	      ;串行口工作于方式3,SM0=1,SM1=1,SM2=0.
	                      ;并允許接收REN=1,TB8=1,RB8=1,TI=0,RI=0.
   SETB  EA	              ;開總中斷.
   SETB  EX0                  ;允許中斷0中斷.
   SETB  PX0                  ;外部中斷設定為高優先級.
   CLR   IT0                  ;外部中斷0為電平觸發. 
   SETB  ET0                  ;允許定時器T0中斷.
   CLR	ET1	              ;禁止定時器T1中斷.
   CLR   ES                   ;禁止串行中斷.
   CLR   TI                   ;清發送中斷標志.
   CLR   RI                   ;清接收中斷標志.

;以下為寫8255控制字程序,
;其中PA口地址:7FFCH,PB口地址:7FFDH,PC口地址:7FFEH,控制口地址:7FFFH
PRINT: MOV DPTR,#7FFFH  ;控制口地址
       MOV A,#8BH  	;控制字
       MOVX @DPTR,A     ;寫入控制字
;以下為單片機從主機讀取數據的程序段
;以下為發送數據的程序段.
READ_P:MOV   51H,#01H         ;讀單片機的地址
   MOV   52H,#03H             ;功能代碼
   MOV   53H,#00H             ;
   MOV   54H,#0BH             ;選擇十進制12號寄存器。
   MOV   55H,#00H             ;
   MOV   56H,#01H             ;需讀的寄存器個數
   MOV   50H,#06              ;寫需要發送的數據個數(不包括CRC_16校驗碼).
   LCALL SEND                 ;調用發送子程序.
;以下為接收數據的程序段.
   MOV   50H,#08              ;需接收的數據位數賦值.
   LCALL RECE                 ;調用接收子程序.
   MOV   A,42H                ;
   CJNE  A,#100,READ_WRO      ;通訊不成功則跳轉.
   AJMP  READ_P_OK            ;
READ_WRO:AJMP READ_WRONG
   mov A,51H
   CJNE  A,#1,READ_P           ;比較地址,若不是本單片機地址則重發
;以下為接收成功后的數據處理程序.接收的數據送PA口輸出
READ_P_OK: 
   MOV 48H,55H               ;保存讀回低字節數值
   MOV DPTR,#7FFCH           ;PA口地址
   MOV A,48H                 ;
   MOVX @DPTR,A               ;低字節數值由PA口輸出


;以下為單片機發送數據到主機程序段
WRITE_STATE:MOV   51H,#01H    ;寫主機的就緒狀態.
   MOV   52H,#06H             ;寫單個寄存器.
   MOV   53H,#00H             ;寫需要寫的寄存器地址#25(十進制).
   MOV   54H,#19H             ;
   MOV   DPTR,#7FFEH          ;C口地址→DPTR
   MOVX  A,@DPTR              ;從C口讀數據
   MOV   55H,A                ;寫需要寫入的數據PC讀入的值. 
   MOV   DPTR,#7FFDH          ;B口地址→DPTR
   MOVX  A,@DPTR              ;從B口讀數據
   MOV   56H,A                ;寫需要寫入的數據PB讀入的值.   
   MOV   50H,#06              ;寫需要發送的數據個數(不包括CRC_16校驗碼).
   LCALL SEND                 ;調用發送子程序.
;以下為接收數據的程序段.
   MOV   50H,#08              ;需接收的數據位數賦值.
   LCALL RECE                 ;調用接收子程序.
   MOV   A,42H                ;
   CJNE  A,#100,WRITE_WRONG   ;通訊不成功則跳轉.


WRITE_WRONG:AJMP  READ_WRONG  ;寫失敗的程序與讀失敗的處理程序相同.
;以下為讀參數失敗后的處理程序段.
READ_WRONG:	SETB P2.0      ;顯示功能碼A.
   AJMP READ_P                ;
;主程序結束.




;以下為單片機向主機發送數據的子程序,需要輸入待發送的數據(51H地址為起始地址),
                              ;以及需要發送的數據個數(存在50H,不包括CRC_16校驗碼).
			      ;調用該子程序時會自動計算CRC_16結果并添加到數據塊最后
			      ;并發送;40H為已經發送的數據個數計算存儲器.
SEND:LCALL  CRC_16            ;根據待發送的內容及許發送的數據個數計算CRC_16.
   MOV    A,50H               ;取出需發送的數據個數.
   ADD    A,#51H              ;寫入CRC_16結果的低字節.
   MOV    R1,A                ;
   MOV    @R1,4DH             ;
   INC    R1                  ;寫入CRC_16結果的高字節.
   MOV    @R1,4EH             ;
   INC    50H                 ;需要發送的數據個數加2.
   INC    50H                 ;
   MOV    40H,#00H            ;已發送的數據清零. 
SEND_LOOP:	MOV    A,40H      ;計算待發送的數據地址.
   ADD    A,#51H              ;
   MOV    R1,A                ;
   MOV    A,@R1               ;
   MOV    SBUF,A              ;發送數據.
SEND_WAIT:JNB TI,SEND_WAIT    ;等待發送完畢.
   CLR    TI                  ;
   INC    40H                 ;
   MOV    A,40H               ;
   CJNE   A,50H,SEND_LOOP     ;
   RET                        ;
;發送子程序結束.
;以下為接收子程序.需要輸入需接收的數據個數(存在50H中,不包含CRC_16的校驗碼),
                              ;當接收到指定個數時(接收過程有超時控制),該子程序會自動
     			      ;計算其CRC_16是否為0(正確),并返回接收成功或失敗標志
			      ;(42H=100表示成功);41H用作已接收的數據個數計算.
RECE:MOV    42H,#100          ;置通訊成功標志.
   MOV    41H,#00H            ;已經接收的數據個數清零.
RECE_WAIT:MOV R7,#02          ;2006-09-19 21:00更改通訊超時為100ms,
RECE_L0:  MOV   R6,#200       ;
RECE_L1:  MOV   R5,#250       ;
RECE_L2:  JB    RI,RECE_NEXT  ;
   DJNZ   R5,RECE_L2          ;	
   DJNZ   R6,RECE_L1          ;
   DJNZ   R7,RECE_L0          ;
   MOV    42H,#00             ;置超時通訊失敗標志.
RECE_NEXT:CLR   RI            ;清接收中斷標志.
   MOV    A,41H               ;計算待接收的數據存放地址.
   ADD    A,#51H              ;
   MOV    R1,A                ;地址存放在R1中.
   MOV    A,SBUF              ;讀取接收到的數據.
   MOV    @R1,A               ;
   INC    41H                 ;已接收的數據個數加1.
   MOV    A,41H               ;
   CJNE   A,50H,RECE_WAIT     ;
   LCALL  CRC_16              ;
   MOV    A,4EH               ;判斷CRC_16結果中高字節是否位0.
   CJNE   A,#00H,RECE_WRONG   ;
   MOV    A,4DH               ;判斷CRC_16結果中低字節是否位0.
   CJNE   A,#00H,RECE_WRONG   ;
   AJMP   RECE_OUT            ;
RECE_WRONG:MOV  42H,#00H      ;置通訊失敗標志.
RECE_OUT:RET                  ;子程序結束.
;接收子程序結束.
;以下為進行CRC-16校驗的子程序.
;CRC_16校驗模塊使用的存儲器如下:
;51H,52H,53H,......:為要進行CRC_16校驗的數據塊,并且進行校驗程序時總是將51H的內容
                              ;當第一字節,52H內容為第二字節,......
;50H:要進行CRC_16校驗的數據塊長度設定存儲器.
;4FH:進行CRC_16校驗時對已處理字節進行計數用存儲器.
;4EH:CRC_16校驗結果存儲器的高字節.
;4DH:CRC_16校驗結果存儲器的低字節.
;4CH:進行CRC_16校驗時對當前字節已移位次數進行記錄的存儲器.
CRC_16:MOV  4EH,#0FFH         ;CRC_16檢驗結果存儲器的高位字節置全1.
   MOV   4DH,#0FFH            ;CRC_16檢驗結果存儲器的低位字節置全1.
   MOV   4FH,#51H             ;已進行CRC_16處理的數據地址初始化.
;以下為對逐個數據進行CRC_16檢驗.
CRC_LOOP1:MOV 4CH,#00H        ;已對單字節進行移位的次數清零.
   MOV   R0,4FH               ;將要處理的數據地址賦值給R0.
   MOV   A,@R0                ;以R0中的內容為地址,取出該地址中的數據到A.
   XRL   4DH,A                ;單字節數據與CRC_16檢驗結果存儲器中的低位進行異或,
	                      ;結果存入CRC_16存儲器的低字節.
CRC_LOOP2:CLR   C             ;進位標志清零. 
   MOV   A,4EH                ;取出CRC_16檢驗結果存儲器中的高字節.
   RRC   A                    ;帶進位標志右移一位.
   MOV   4EH,A                ;將移位后的數據回傳給CRC_16檢驗結果存儲器中的高位.
   MOV   A,4DH                ;取出CRC_16檢驗結果存儲器中的低字節.
   RRC   A                    ;帶進位標志右移一位.
   MOV   4DH,A                ;將移位后的數據回傳給CRC_16檢驗結果存儲器中的低位.
   INC   4CH                  ;移位次數存儲器加1.
   JC    CRC_CAL              ;如果移出的數為1則跳轉到CRC_CAL.
   AJMP  CRC_NEXT             ;跳轉到移位次數判斷.
CRC_CAL:XRL 4EH,#10100000B    ;CRC_16存儲器中高字節與多項式的高字節進行異或,
                              ;結果存入CRC_16存儲器的高字節.
   XRL   4DH,#00000001B       ;CRC_16存儲器中低字節與多項式的低字節進行異或,
                              ;結果存入CRC_16存儲器的低字節.
CRC_NEXT:MOV A,4CH            ;移位次數判斷.
   CJNE  A,#08,CRC_LOOP2      ;移位次數不到8則轉移.
   INC   4FH                  ;已處理的數據地址加1.
   MOV   A,4FH                ;取出已處理的數據地址.
   SUBB  A,#51H               ;通過減法求實際已處理的數據個數. 
   CJNE  A,50H,CRC_LOOP1      ;數據處理個數不到預定值則轉移繼續處理.
   RET                        ;子程序返回.
;CRC_16子程序結束.
;以下為字型表:
;          0   1   2   3   4   5   6   7   8   9   P   A
TABLE:DB  192,249,164,176,153,146,130,248,128,144,140,136
    	END

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人免费视频网站| 精油按摩中文字幕久久| 26uuuu精品一区二区| 欧美日韩精品免费| 欧美手机在线视频| 欧美私模裸体表演在线观看| 在线精品观看国产| 欧美综合亚洲图片综合区| 91麻豆精东视频| 日本道免费精品一区二区三区| 成人app在线| 91色在线porny| 欧美性一级生活| 欧美日韩aaaaa| 日韩精品一区二区三区四区 | 久久国产综合精品| 六月丁香婷婷色狠狠久久| 极品美女销魂一区二区三区| 国产呦萝稀缺另类资源| 成人av动漫网站| 在线影院国内精品| 91精选在线观看| 久久久精品欧美丰满| 日韩视频在线一区二区| 久久精品视频一区| 自拍av一区二区三区| 午夜在线电影亚洲一区| 国内外精品视频| 99re免费视频精品全部| 欧美高清www午色夜在线视频| 日韩欧美中文一区二区| 中文乱码免费一区二区| 青青草国产成人99久久| 99久久免费视频.com| 欧美日韩视频专区在线播放| 久久精品夜夜夜夜久久| 亚洲六月丁香色婷婷综合久久 | 欧美性生活影院| 精品欧美久久久| 亚洲视频免费看| jiyouzz国产精品久久| 欧美女孩性生活视频| 国产日韩欧美精品在线| 一区二区三国产精华液| 国产在线不卡视频| 一本到三区不卡视频| 精品黑人一区二区三区久久| 樱花草国产18久久久久| 久久91精品国产91久久小草| 色综合久久久久久久久久久| 久久综合一区二区| 亚洲一区二区三区自拍| 成人激情小说乱人伦| 777精品伊人久久久久大香线蕉| 国产精品九色蝌蚪自拍| 另类的小说在线视频另类成人小视频在线| caoporn国产精品| 日韩免费观看高清完整版在线观看| 国产农村妇女精品| 久久国产精品99精品国产| 欧美体内she精高潮| 亚洲男同1069视频| 国产精品一卡二卡| 日韩欧美在线观看一区二区三区| 亚洲第一综合色| 99久久伊人网影院| 欧美激情综合网| 国产在线一区观看| 精品欧美乱码久久久久久| 亚洲电影你懂得| 在线视频综合导航| 中文字幕一区二区三区在线不卡| 国产一区二区三区精品欧美日韩一区二区三区| 欧美视频一区二区三区四区| 亚洲伦理在线免费看| 91在线观看高清| 国产精品久久久久精k8| 成人精品电影在线观看| 国产精品精品国产色婷婷| 国产电影精品久久禁18| 国产三级欧美三级| 国产丶欧美丶日本不卡视频| 久久精品无码一区二区三区| 国产一区不卡精品| 久久男人中文字幕资源站| 国产一区二区看久久| 亚洲精品在线电影| 国产一区二区三区在线观看精品 | 国产成人av网站| 久久久99免费| 国产91精品一区二区麻豆亚洲| 国产人成亚洲第一网站在线播放| 国产91精品久久久久久久网曝门| 中文字幕国产一区| 91丝袜呻吟高潮美腿白嫩在线观看| 亚洲丝袜制服诱惑| 欧美亚洲日本国产| 奇米影视在线99精品| 2022国产精品视频| 99精品视频一区| 亚洲www啪成人一区二区麻豆 | 日韩午夜精品视频| 国产麻豆精品95视频| 亚洲欧美在线aaa| 欧美午夜在线一二页| 日本视频在线一区| 久久精品欧美日韩| 91黄色免费观看| 久久综合综合久久综合| 国产欧美一区二区精品久导航 | 亚洲一区二区成人在线观看| 日韩一区二区影院| 成人av在线资源| 日本在线观看不卡视频| 久久久精品影视| 欧美专区亚洲专区| 国产一区二区久久| 亚洲成人你懂的| 国产精品久久久久久久岛一牛影视| 在线亚洲人成电影网站色www| 蜜桃视频在线一区| 亚洲免费观看在线视频| 2021中文字幕一区亚洲| 欧美亚洲国产bt| 国产69精品久久99不卡| 日韩专区一卡二卡| 亚洲欧美日韩国产综合| 精品999在线播放| 欧美精品粉嫩高潮一区二区| 成人黄色av电影| 精品在线免费视频| 亚欧色一区w666天堂| 亚洲天堂a在线| 久久尤物电影视频在线观看| 7777精品伊人久久久大香线蕉的 | 欧洲一区在线观看| 高清国产一区二区三区| 日本成人中文字幕| 亚洲精品国产a| 国产精品日韩成人| 久久亚洲春色中文字幕久久久| 91精品国产品国语在线不卡| 欧美中文字幕一区| 91电影在线观看| 91色综合久久久久婷婷| 成人av在线电影| 懂色av一区二区在线播放| 国产在线精品一区二区夜色| 午夜精品一区在线观看| 亚洲成va人在线观看| 亚洲伊人伊色伊影伊综合网| 一区二区三区国产| 亚洲人成人一区二区在线观看| 国产日韩欧美综合一区| 国产亚洲污的网站| 久久精品一区二区| 国产午夜精品久久| 欧美激情在线看| 一色屋精品亚洲香蕉网站| 日本一区二区三区四区| 国产精品久久久久久久久免费樱桃| 久久精品免费在线观看| 欧美国产国产综合| 国产精品卡一卡二卡三| 亚洲嫩草精品久久| 亚洲一二三区在线观看| 午夜成人免费视频| 美女在线一区二区| 黄色精品一二区| aaa欧美日韩| 欧美色区777第一页| 91精品欧美福利在线观看| 欧美大肚乱孕交hd孕妇| 久久久噜噜噜久噜久久综合| 国产色91在线| 亚洲精品国久久99热| 亚洲成av人片观看| 久国产精品韩国三级视频| 国产高清视频一区| 色丁香久综合在线久综合在线观看 | 成人免费在线视频观看| 亚洲免费在线看| 免费在线成人网| 成人国产精品免费| 欧美日精品一区视频| 日韩欧美三级在线| 国产精品理伦片| 日韩专区一卡二卡| www.在线欧美| 在线综合+亚洲+欧美中文字幕| 久久久天堂av| 丝袜美腿亚洲综合| 成人一级片网址| 日韩三级视频在线看| 136国产福利精品导航| 石原莉奈在线亚洲二区| 不卡免费追剧大全电视剧网站| 4438x成人网最大色成网站| 国产精品蜜臀在线观看| 日本aⅴ精品一区二区三区 |