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

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

?? uart.lst

?? 串口轉發IIC程序
?? LST
?? 第 1 頁 / 共 3 頁
字號:
   1               		.file	"UART.c"
   2               		.arch atmega16
   3               	__SREG__ = 0x3f
   4               	__SP_H__ = 0x3e
   5               	__SP_L__ = 0x3d
   6               	__tmp_reg__ = 0
   7               	__zero_reg__ = 1
   8               		.global __do_copy_data
   9               		.global __do_clear_bss
  11               		.text
  12               	.Ltext0:
  54               	.global	outlast
  55               		.data
  58               	outlast:
  59 0000 0000      		.word	outbuf
  60               	.global	putlast
  63               	putlast:
  64 0002 0000      		.word	outbuf
  65               	.global	inlast
  68               	inlast:
  69 0004 0000      		.word	inbuf
  70               	.global	getlast
  73               	getlast:
  74 0006 0000      		.word	inbuf
  75               		.text
  78               	.global	PutByte
  80               	PutByte:
   1:UART.c        **** /************************************************************************ 
   2:UART.c        **** ;*  公 司:  xx 
   3:UART.c        **** ;*  模 塊:  serial.c 
   4:UART.c        **** ;*  功 能:  串口中斷服務程序,僅需做簡單調用即可完成串口輸入輸出的處理; 
   5:UART.c        **** ;*          出入均設有緩沖區,大小可任意設置 
   6:UART.c        **** ;*  芯 片:  AMEGA16 
   7:UART.c        **** ;*  說 明:  未利用串口發送硬件BUFF 
   8:UART.c        **** ;*  設 計:  李耀峰 
   9:UART.c        **** ;*  時 間:  2005-11-24 
  10:UART.c        **** ;*  版 本:   V1.0 
  11:UART.c        **** ;*  記 錄:   
  12:UART.c        **** ;************************************************************************/ 
  13:UART.c        **** 
  14:UART.c        **** 
  15:UART.c        **** /************************************************************************ 
  16:UART.c        **** 可供使用的函數名: 
  17:UART.c        **** extern void PutByte(U8 c);                 //放入一個字節到發送緩沖區 
  18:UART.c        **** extern void PutString(U8  *puts);            //發送一個定義在程序存儲區的字符串到串口 
  19:UART.c        **** extern void PutBytes(U8 *outplace,U8 j);   //發送一串數據 
  20:UART.c        **** extern void PutHEX(U8 c);                    //發送一個字節的hex碼,分成兩個字節發 
  21:UART.c        **** extern U8 GetByte (void);                    //從接收緩沖區取一個byte 
  22:UART.c        **** extern void SerialInit (U16 baud);            //串口初始化 
  23:UART.c        **** 
  24:UART.c        **** extern U8 inbufsign;                      //接收緩沖區數據,有數據=1。 
  25:UART.c        **** 
  26:UART.c        **** #define CR PutString("\r\n")               //發送一個回車換行 
  27:UART.c        **** #define NUL putstring("\0")                   //發送一個空格 
  28:UART.c        **** *************************************************************************/ 
  29:UART.c        **** 
  30:UART.c        **** #include <avr\io.h>  
  31:UART.c        **** //#include <macros.h>  
  32:UART.c        **** #include "interrupt.h"
  33:UART.c        **** #include "avr\signal.h"
  34:UART.c        **** #include "Uart.h"
  35:UART.c        **** #define U8 unsigned char 
  36:UART.c        **** #define U16 unsigned int 
  37:UART.c        **** 
  38:UART.c        **** 
  39:UART.c        **** 
  40:UART.c        **** U8    outbuf[OLEN];           //發送緩沖 
  41:UART.c        **** U8    inbuf[ILEN];            //接收數據緩沖 
  42:UART.c        **** U8    *outlast=outbuf;        //最后由中斷傳輸出去的字節位置 
  43:UART.c        **** U8    *putlast=outbuf;        //最后放入發送緩沖區的字節位置 
  44:UART.c        **** U8    *inlast=inbuf;          //最后接收到接收緩沖區的字節位置 
  45:UART.c        **** U8    *getlast=inbuf;         //最后從發送緩沖區取走的字節位置 
  46:UART.c        **** 
  47:UART.c        **** 
  48:UART.c        **** //#define inbufsign bit_flag.bit3   //接收緩沖區非空標志   有=1 
  49:UART.c        **** //U8 outbufsign0;                //緩沖區數據發完標志   發完=0 
  50:UART.c        **** //U8 outbufsign;                //發送緩沖區非空標志   有=1 
  51:UART.c        **** //U8 inbufful;                  //接收緩沖區滿標志     滿=1 
  52:UART.c        **** 
  53:UART.c        **** U8 inbufsign;                  //接收緩沖區非空標志   有=1 
  54:UART.c        **** struct data bit_flag;
  55:UART.c        **** 
  56:UART.c        **** 
  57:UART.c        **** 
  58:UART.c        **** //********************************************************************** 
  59:UART.c        **** //函 數 名:   void PutByte(U8 c) 
  60:UART.c        **** //功    能:   放入一個字節到發送緩沖區 
  61:UART.c        **** //說    明: 
  62:UART.c        **** //參    數: 
  63:UART.c        **** //返 回 值: 
  64:UART.c        **** //示    范:   PutByte(0x00); 
  65:UART.c        **** //*********************************************************************** 
  66:UART.c        ****     void PutByte(U8 c) 
  67:UART.c        ****     { 
  82               	.LM1:
  83               	/* prologue: frame size=1 */
  84 0000 CF93      		push r28
  85 0002 DF93      		push r29
  86 0004 CDB7      		in r28,__SP_L__
  87 0006 DEB7      		in r29,__SP_H__
  88 0008 2197      		sbiw r28,1
  89 000a 0FB6      		in __tmp_reg__,__SREG__
  90 000c F894      		cli
  91 000e DEBF      		out __SP_H__,r29
  92 0010 0FBE      		out __SREG__,__tmp_reg__
  93 0012 CDBF      		out __SP_L__,r28
  94               	/* prologue end (size=10) */
  95 0014 8983      		std Y+1,r24
  68:UART.c        ****        cli();              //暫停串行中斷,以免數據比較時出錯 
  97               	.LM2:
  98               	/* #APP */
  99 0016 F894      		cli
 100               	/* #NOAPP */
 101               	.L2:
  69:UART.c        ****        while((((outlast-putlast)==2)&&(outlast > putlast ))||((outlast < putlast)&&(OLEN-(putlast-o
 103               	.LM3:
 104 0018 8091 0000 		lds r24,outlast
 105 001c 9091 0000 		lds r25,(outlast)+1
 106 0020 2091 0000 		lds r18,putlast
 107 0024 3091 0000 		lds r19,(putlast)+1
 108 0028 821B      		sub r24,r18
 109 002a 930B      		sbc r25,r19
 110 002c 8230      		cpi r24,2
 111 002e 9105      		cpc r25,__zero_reg__
 112 0030 59F4      		brne .L5
 113 0032 2091 0000 		lds r18,outlast
 114 0036 3091 0000 		lds r19,(outlast)+1
 115 003a 8091 0000 		lds r24,putlast
 116 003e 9091 0000 		lds r25,(putlast)+1
 117 0042 8217      		cp r24,r18
 118 0044 9307      		cpc r25,r19
 119 0046 E8F0      		brlo .L4
 120               	.L5:
 121 0048 2091 0000 		lds r18,outlast
 122 004c 3091 0000 		lds r19,(outlast)+1
 123 0050 8091 0000 		lds r24,putlast
 124 0054 9091 0000 		lds r25,(putlast)+1
 125 0058 2817      		cp r18,r24
 126 005a 3907      		cpc r19,r25
 127 005c D8F4      		brsh .L3
 128 005e 2091 0000 		lds r18,putlast
 129 0062 3091 0000 		lds r19,(putlast)+1
 130 0066 8091 0000 		lds r24,outlast
 131 006a 9091 0000 		lds r25,(outlast)+1
 132 006e 281B      		sub r18,r24
 133 0070 390B      		sbc r19,r25
 134 0072 8CE0      		ldi r24,lo8(12)
 135 0074 90E0      		ldi r25,hi8(12)
 136 0076 821B      		sub r24,r18
 137 0078 930B      		sbc r25,r19
 138 007a 8230      		cpi r24,2
 139 007c 9105      		cpc r25,__zero_reg__
 140 007e 09F0      		breq .L4
 141 0080 09C0      		rjmp .L3
 142               	.L4:
  70:UART.c        ****        { 
  71:UART.c        ****           sei(); 
 144               	.LM4:
 145               	/* #APP */
 146 0082 7894      		sei
  72:UART.c        ****           c++;c--; 
 148               	.LM5:
 149               	/* #NOAPP */
 150 0084 8981      		ldd r24,Y+1
 151 0086 8F5F      		subi r24,lo8(-(1))
 152 0088 8983      		std Y+1,r24
 153 008a 8981      		ldd r24,Y+1
 154 008c 8150      		subi r24,lo8(-(-1))
 155 008e 8983      		std Y+1,r24
  73:UART.c        ****           cli(); 
 157               	.LM6:
 158               	/* #APP */
 159 0090 F894      		cli
 160               	/* #NOAPP */
 161 0092 C2CF      		rjmp .L2
 162               	.L3:
  74:UART.c        ****        } 
  75:UART.c        ****        *putlast=c;         //放字節進入緩沖區 
 164               	.LM7:
 165 0094 E091 0000 		lds r30,putlast
 166 0098 F091 0000 		lds r31,(putlast)+1
 167 009c 8981      		ldd r24,Y+1
 168 009e 8083      		st Z,r24
  76:UART.c        ****        putlast++;          //發送緩沖區指針加1 
 170               	.LM8:
 171 00a0 8091 0000 		lds r24,putlast
 172 00a4 9091 0000 		lds r25,(putlast)+1
 173 00a8 0196      		adiw r24,1
 174 00aa 9093 0000 		sts (putlast)+1,r25
 175 00ae 8093 0000 		sts putlast,r24
  77:UART.c        ****        if (putlast==outbuf+OLEN) putlast=outbuf;  //指針到了頂部換到底部 
 177               	.LM9:
 178 00b2 8091 0000 		lds r24,putlast
 179 00b6 9091 0000 		lds r25,(putlast)+1
 180 00ba 20E0      		ldi r18,hi8(outbuf+12)
 181 00bc 8030      		cpi r24,lo8(outbuf+12)
 182 00be 9207      		cpc r25,r18
 183 00c0 31F4      		brne .L6
 184 00c2 80E0      		ldi r24,lo8(outbuf)
 185 00c4 90E0      		ldi r25,hi8(outbuf)
 186 00c6 9093 0000 		sts (putlast)+1,r25
 187 00ca 8093 0000 		sts putlast,r24
 188               	.L6:
  78:UART.c        ****        outbufsign=1; 
 190               	.LM10:
 191 00ce 8091 0000 		lds r24,bit_flag
 192 00d2 8260      		ori r24,lo8(2)
 193 00d4 8093 0000 		sts bit_flag,r24
  79:UART.c        ****        if (!outbufsign0)                       //緩沖區無數據 
 195               	.LM11:
 196 00d8 8091 0000 		lds r24,bit_flag
 197 00dc 9927      		clr r25
 198 00de 8170      		andi r24,lo8(1)
 199 00e0 9070      		andi r25,hi8(1)
 200 00e2 0097      		sbiw r24,0
 201 00e4 99F5      		brne .L7
  80:UART.c        ****        { 
  81:UART.c        ****           outbufsign0=1; 
 203               	.LM12:
 204 00e6 8091 0000 		lds r24,bit_flag
 205 00ea 8160      		ori r24,lo8(1)
 206 00ec 8093 0000 		sts bit_flag,r24
  82:UART.c        **** 
  83:UART.c        ****           UDR=*outlast;                        //未發送完繼續發送 
 208               	.LM13:
 209 00f0 E091 0000 		lds r30,outlast
 210 00f4 F091 0000 		lds r31,(outlast)+1
 211 00f8 8081      		ld r24,Z
 212 00fa 8093 2C00 		sts 44,r24
  84:UART.c        ****          outlast++;                          //最后傳出去的字節位置加1 
 214               	.LM14:
 215 00fe 8091 0000 		lds r24,outlast
 216 0102 9091 0000 		lds r25,(outlast)+1
 217 0106 0196      		adiw r24,1
 218 0108 9093 0000 		sts (outlast)+1,r25
 219 010c 8093 0000 		sts outlast,r24
  85:UART.c        ****          if (outlast==outbuf+OLEN) outlast=outbuf;//地址到頂部回到底部 
 221               	.LM15:
 222 0110 8091 0000 		lds r24,outlast
 223 0114 9091 0000 		lds r25,(outlast)+1
 224 0118 20E0      		ldi r18,hi8(outbuf+12)
 225 011a 8030      		cpi r24,lo8(outbuf+12)
 226 011c 9207      		cpc r25,r18
 227 011e 31F4      		brne .L8
 228 0120 80E0      		ldi r24,lo8(outbuf)
 229 0122 90E0      		ldi r25,hi8(outbuf)
 230 0124 9093 0000 		sts (outlast)+1,r25
 231 0128 8093 0000 		sts outlast,r24
 232               	.L8:
  86:UART.c        ****          if (putlast==outlast) outbufsign=0;     //數據發送完置發送緩沖區空標志 
 234               	.LM16:
 235 012c 2091 0000 		lds r18,putlast
 236 0130 3091 0000 		lds r19,(putlast)+1
 237 0134 8091 0000 		lds r24,outlast
 238 0138 9091 0000 		lds r25,(outlast)+1
 239 013c 2817      		cp r18,r24
 240 013e 3907      		cpc r19,r25
 241 0140 29F4      		brne .L7
 242 0142 8091 0000 		lds r24,bit_flag
 243 0146 8D7F      		andi r24,lo8(-3)
 244 0148 8093 0000 		sts bit_flag,r24
 245               	.L7:
  87:UART.c        ****        }                                           //緩沖區開始為空置為有,啟動發送 
  88:UART.c        ****        sei(); 
 247               	.LM17:
 248               	/* #APP */
 249 014c 7894      		sei
 250               	/* #NOAPP */
 251               	/* epilogue: frame size=1 */
 252 014e 2196      		adiw r28,1
 253 0150 0FB6      		in __tmp_reg__,__SREG__
 254 0152 F894      		cli
 255 0154 DEBF      		out __SP_H__,r29
 256 0156 0FBE      		out __SREG__,__tmp_reg__
 257 0158 CDBF      		out __SP_L__,r28
 258 015a DF91      		pop r29
 259 015c CF91      		pop r28
 260 015e 0895      		ret
 261               	/* epilogue end (size=9) */
 262               	/* function PutByte size 180 (161) */
 266               	.global	PutString
 268               	PutString:
  89:UART.c        ****     } 
  90:UART.c        **** 
  91:UART.c        **** //********************************************************************** 
  92:UART.c        **** //函 數 名:     void PutString(U8  *puts) 
  93:UART.c        **** //功    能:   發送字符串到串口 
  94:UART.c        **** //說    明:      
  95:UART.c        **** //參    數:     發送的字符串 
  96:UART.c        **** //返 回 值: 
  97:UART.c        **** //示    范:   putstring("\r\n") 
  98:UART.c        **** //*********************************************************************** 
  99:UART.c        ****     void PutString(U8  *puts) 
 100:UART.c        ****    { 
 270               	.LM18:
 271               	/* prologue: frame size=2 */
 272 0160 CF93      		push r28
 273 0162 DF93      		push r29
 274 0164 CDB7      		in r28,__SP_L__
 275 0166 DEB7      		in r29,__SP_H__
 276 0168 2297      		sbiw r28,2
 277 016a 0FB6      		in __tmp_reg__,__SREG__
 278 016c F894      		cli
 279 016e DEBF      		out __SP_H__,r29
 280 0170 0FBE      		out __SREG__,__tmp_reg__
 281 0172 CDBF      		out __SP_L__,r28
 282               	/* prologue end (size=10) */
 283 0174 8983      		std Y+1,r24
 284 0176 9A83      		std Y+2,r25
 285               	.L11:
 101:UART.c        ****        for(;*puts!=0;puts++)   //遇到停止符0結束 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久精品费精品国产一区二区| 亚洲va韩国va欧美va| 狠狠狠色丁香婷婷综合激情| 精品国产一区二区在线观看| 国产乱一区二区| 国产欧美久久久精品影院| 波多野结衣一区二区三区| 中文字幕免费在线观看视频一区| 成人免费高清在线| 一区二区三区毛片| 欧美一区二区三区系列电影| 九九精品视频在线看| 国产调教视频一区| 一本到不卡精品视频在线观看| 一区二区三区欧美激情| 欧美一区二区黄| 国产成人免费视频网站 | 亚洲.国产.中文慕字在线| 欧美日韩精品是欧美日韩精品| 日本成人在线不卡视频| 久久―日本道色综合久久| av一二三不卡影片| 日韩精品成人一区二区在线| 久久久精品综合| 欧美性做爰猛烈叫床潮| 国精产品一区一区三区mba桃花 | 激情丁香综合五月| 亚洲手机成人高清视频| 日韩午夜激情av| 91视视频在线直接观看在线看网页在线看| 亚洲国产精品影院| 国产精品丝袜一区| 欧美一级午夜免费电影| 99精品在线免费| 久久精品国产77777蜜臀| 综合欧美亚洲日本| 精品久久久久久综合日本欧美| 成人精品免费视频| 美女在线视频一区| 亚洲一级二级在线| 国产日韩精品一区二区浪潮av| 欧洲一区二区av| www.欧美亚洲| 裸体歌舞表演一区二区| 亚洲综合在线五月| 国产精品日日摸夜夜摸av| 91精品国产黑色紧身裤美女| 一本色道综合亚洲| 国产经典欧美精品| 精品一区免费av| 亚洲综合激情另类小说区| 中文字幕欧美国产| 亚洲chinese男男1069| 欧美国产欧美综合| 精品久久久久久无| 91精品国产一区二区人妖| 91麻豆蜜桃一区二区三区| 丰满少妇久久久久久久| 极品尤物av久久免费看| 青青草国产精品97视觉盛宴 | 欧美精品一区二区三| 欧美日韩小视频| 色综合激情久久| av中文字幕在线不卡| 国产91精品一区二区| 国产麻豆精品一区二区| 久久成人久久爱| 视频在线观看91| 日日夜夜免费精品视频| 日韩综合小视频| 视频精品一区二区| 亚洲 欧美综合在线网络| 亚洲国产你懂的| 亚洲午夜视频在线观看| 亚洲影院理伦片| 亚洲小少妇裸体bbw| 亚洲成人黄色影院| 日韩中文字幕一区二区三区| 亚洲在线免费播放| 亚洲午夜免费福利视频| 亚洲一区二区精品3399| 亚洲午夜视频在线| 日日夜夜免费精品视频| 蜜桃av一区二区| 国产最新精品免费| 国产成a人亚洲精| 99国产精品国产精品久久| 成人网男人的天堂| 91天堂素人约啪| 欧美日韩成人在线一区| 日韩视频一区二区三区在线播放| 欧美一卡二卡在线观看| 精品国产露脸精彩对白| 国产午夜一区二区三区| 国产精品黄色在线观看| 一区二区三区四区在线免费观看 | 成人国产精品免费观看| 色综合久久久久| 欧美日韩亚洲高清一区二区| 制服丝袜激情欧洲亚洲| 欧美xingq一区二区| 国产欧美视频一区二区三区| 综合欧美亚洲日本| 日韩高清在线电影| 国产成人一区二区精品非洲| 9色porny自拍视频一区二区| 欧美性大战久久| 精品人在线二区三区| 亚洲欧洲另类国产综合| 亚洲大片在线观看| 国产精选一区二区三区| 色综合久久99| 久久亚洲综合色| 一区二区三区中文字幕| 蜜臀av性久久久久蜜臀av麻豆| 国产91露脸合集magnet| 欧美日韩国产影片| 久久精品视频免费| 亚洲成人精品一区| 成人午夜看片网址| 91麻豆精品国产91久久久使用方法 | 国产精品女人毛片| 亚洲 欧美综合在线网络| 成人一区二区三区在线观看| 欧美精品在线视频| 国产精品无遮挡| 美脚の诱脚舐め脚责91| 色婷婷av一区二区| 久久精品男人的天堂| 日韩成人一区二区三区在线观看| 成人av在线网站| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 精品国产乱码久久久久久闺蜜| 亚洲男同1069视频| 国产电影精品久久禁18| 欧美一区在线视频| 一区二区三区在线看| 不卡的av网站| 精品免费视频.| 亚洲gay无套男同| 91免费观看在线| 国产精品色一区二区三区| 久久精品国产精品亚洲精品| 欧美三级韩国三级日本三斤| 国产精品久久久久久久久图文区 | 午夜精品福利视频网站 | 色欧美88888久久久久久影院| 337p粉嫩大胆噜噜噜噜噜91av| 视频一区在线播放| 欧美欧美午夜aⅴ在线观看| 亚洲免费av高清| 成人爱爱电影网址| 国产女人aaa级久久久级| 国产一区不卡在线| 精品国产sm最大网站免费看| 久久精品国产99久久6| 欧美一区二区福利视频| 午夜视频在线观看一区二区| 91久久精品午夜一区二区| 亚洲视频一区在线| 99re热这里只有精品免费视频| 久久精品亚洲麻豆av一区二区| 国产毛片精品一区| 久久久久久久久一| 国产成人日日夜夜| 国产精品久久久久桃色tv| av在线这里只有精品| 国产欧美视频在线观看| 不卡欧美aaaaa| 一区在线观看免费| 日本韩国一区二区三区| 亚洲国产精品久久艾草纯爱| 欧美视频在线一区二区三区| 午夜精品福利一区二区蜜股av | 在线看国产一区| 亚洲图片欧美色图| 在线不卡a资源高清| 蜜臀av一级做a爰片久久| 精品国产亚洲在线| 国产成人小视频| 日韩美女视频一区| 欧美在线高清视频| 日本怡春院一区二区| 日韩女同互慰一区二区| 国产精品综合一区二区三区| 国产精品久久看| 欧美色大人视频| 国内欧美视频一区二区| 中文在线资源观看网站视频免费不卡 | 欧美岛国在线观看| 成人一区二区三区视频在线观看| 亚洲日本韩国一区| 欧美日韩第一区日日骚| 久国产精品韩国三级视频| 国产欧美日韩视频在线观看| 91麻豆免费看| 久久黄色级2电影| 亚洲人成网站影音先锋播放| 在线不卡a资源高清| 国产91丝袜在线18|