⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 comm.lst

📁 cs5460a做功率表用 cs5460a做功率表用 cs5460a做功率表
💻 LST
📖 第 1 页 / 共 2 页
字号:
   1               		.file	"Comm.c"
   2               		.arch atmega8
   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:
 102               	.global	UartOverTime
 103               		.data
 106               	UartOverTime:
 107 0000 01        		.byte	1
 108 0001 0000      		.word	0
 109               	.global	pComData
 110               		.section	.progmem.data,"a",@progbits
 113               	pComData:
 114 0000 0000      		.word	Detect_A1+1
 115 0002 0000      		.word	Detect_A1
 116 0004 0000      		.word	Detect_A0+1
 117 0006 0000      		.word	Detect_A0
 118 0008 0000      		.word	Detect_B1+1
 119 000a 0000      		.word	Detect_B1
 120 000c 0000      		.word	Detect_B0+1
 121 000e 0000      		.word	Detect_B0
 122 0010 0000      		.word	Detect_T0+1
 123 0012 0000      		.word	Detect_T0
 124 0014 0000      		.word	Detect_T1+1
 125 0016 0000      		.word	Detect_T1
 126               		.text
 128               	.global	__vector_11
 130               	__vector_11:
   1:task/Comm.c   **** /**********************************************
   2:task/Comm.c   **** 公司名称:
   3:task/Comm.c   **** 文 件 名:Comm.c
   4:task/Comm.c   **** 版 本 号:
   5:task/Comm.c   **** 程序设计:
   6:task/Comm.c   **** 说    明:串行通信
   7:task/Comm.c   **** 完成日期:
   8:task/Comm.c   **** 修改日期:
   9:task/Comm.c   **** 功能摘要:	
  10:task/Comm.c   **** ***********************************************/
  11:task/Comm.c   **** #define  _CommV10
  12:task/Comm.c   **** #include "includes.h"
  13:task/Comm.c   **** 
  14:task/Comm.c   **** #define  TX						1
  15:task/Comm.c   **** #define  RX						0   
  16:task/Comm.c   **** #define  UART_BUF_SIZE 			17
  17:task/Comm.c   **** 
  18:task/Comm.c   **** #define  VAL_ADDR_MAX  			0x0d   //*pComData表格的长度
  19:task/Comm.c   **** #define  FUN_DATA_ADDR_FIRST  	0x30   //
  20:task/Comm.c   **** 
  21:task/Comm.c   **** /*uint8  *pComData[] PROGMEM =
  22:task/Comm.c   **** { 
  23:task/Comm.c   ****     &((uint8 *)&Ps)[3], &((uint8 *)&Ps)[2], &((uint8 *)&Ps)[1],&((uint8 *)&Ps)[0],
  24:task/Comm.c   **** 	&((uint8 *)&PtVal)[1],  &((uint8 *)&PtVal)[0],
  25:task/Comm.c   **** 	&((uint8 *)&H_Alarm)[1],&((uint8 *)&H_Alarm)[0],
  26:task/Comm.c   **** 	&((uint8 *)&L_Alarm)[1],&((uint8 *)&L_Alarm)[0],
  27:task/Comm.c   **** 	&BaudAndData,
  28:task/Comm.c   **** 	&AddrVal,
  29:task/Comm.c   **** 	&AlarmSwitch,
  30:task/Comm.c   **** 
  31:task/Comm.c   **** };*/
  32:task/Comm.c   **** 
  33:task/Comm.c   **** 
  34:task/Comm.c   **** uint8  *pComData[] PROGMEM = 		 //测试数据用。
  35:task/Comm.c   **** {
  36:task/Comm.c   **** 	&((uint8 *)&Detect_A1)[1],&((uint8 *)&Detect_A1)[0],
  37:task/Comm.c   **** 	&((uint8 *)&Detect_A0)[1],&((uint8 *)&Detect_A0)[0],
  38:task/Comm.c   **** 	&((uint8 *)&Detect_B1)[1],&((uint8 *)&Detect_B1)[0],
  39:task/Comm.c   **** 	&((uint8 *)&Detect_B0)[1],&((uint8 *)&Detect_B0)[0],
  40:task/Comm.c   **** 	&((uint8 *)&Detect_T0)[1],&((uint8 *)&Detect_T0)[0],
  41:task/Comm.c   **** 	&((uint8 *)&Detect_T1)[1],&((uint8 *)&Detect_T1)[0],
  42:task/Comm.c   **** 
  43:task/Comm.c   **** };
  44:task/Comm.c   **** 
  45:task/Comm.c   **** 	
  46:task/Comm.c   **** 
  47:task/Comm.c   **** 																		       
  48:task/Comm.c   **** 																					
  49:task/Comm.c   **** WAIT_TIME_STRUCT	UartOverTime = {1,0};
  50:task/Comm.c   **** 
  51:task/Comm.c   **** static uint8   UartReBuf[UART_BUF_SIZE];
  52:task/Comm.c   **** static uint8   UartTxBuf[UART_BUF_SIZE];
  53:task/Comm.c   **** static OS_Q	   UartReEvent;
  54:task/Comm.c   **** static OS_Q    UartTxEvent;
  55:task/Comm.c   **** static volatile uchar   fTx_done;         //重新发送标志
  56:task/Comm.c   **** static volatile uchar   fRx_start;
  57:task/Comm.c   **** 
  58:task/Comm.c   **** void	sendbuf(uchar temp);
  59:task/Comm.c   **** void	Process_Msg(void);
  60:task/Comm.c   **** void    UART_Init(void);
  61:task/Comm.c   **** void    Baud_Init(uchar Baud_Reg);
  62:task/Comm.c   **** uint    CRC16fromByte(uchar Byte, uint CRC16);
  63:task/Comm.c   **** uchar   ValTab(uint8 com_data_index);
  64:task/Comm.c   **** 
  65:task/Comm.c   **** //-------------------------------------------------
  66:task/Comm.c   **** SIGNAL (SIG_UART_RECV)                 //UART接收完成
  67:task/Comm.c   **** {
 132               	.LM1:
 133               	/* prologue: frame size=0 */
 134 0000 1F92      		push __zero_reg__
 135 0002 0F92      		push __tmp_reg__
 136 0004 0FB6      		in __tmp_reg__,__SREG__
 137 0006 0F92      		push __tmp_reg__
 138 0008 1124      		clr __zero_reg__
 139 000a 2F93      		push r18
 140 000c 3F93      		push r19
 141 000e 4F93      		push r20
 142 0010 5F93      		push r21
 143 0012 6F93      		push r22
 144 0014 7F93      		push r23
 145 0016 8F93      		push r24
 146 0018 9F93      		push r25
 147 001a AF93      		push r26
 148 001c BF93      		push r27
 149 001e EF93      		push r30
 150 0020 FF93      		push r31
 151               	/* prologue end (size=17) */
  68:task/Comm.c   ****     OS_CLOSE_INT();
 153               	.LM2:
 154               	/* #APP */
 155 0022 F894      		cli
 156               	/* #NOAPP */
 157 0024 8091 0000 		lds r24,Os_Enter_Sum
 158 0028 8F5F      		subi r24,lo8(-(1))
 159 002a 8093 0000 		sts Os_Enter_Sum,r24
  69:task/Comm.c   ****     OSQPost(&UartReEvent,UDR);    	  //向消息队列发送一则消息UDR=msg,&UartReEvent数据的长度
 161               	.LM3:
 162 002e 6CB1      		in r22,44-0x20
 163 0030 80E0      		ldi r24,lo8(UartReEvent)
 164 0032 90E0      		ldi r25,hi8(UartReEvent)
 165 0034 00D0      		rcall OSQPost
  70:task/Comm.c   ****     if (UartOverTime.fGetTime)
 167               	.LM4:
 168 0036 8091 0000 		lds r24,UartOverTime
 169 003a 8823      		tst r24
 170 003c 29F0      		breq .L2
  71:task/Comm.c   ****       {
  72:task/Comm.c   ****     	 UartOverTime.fGetTime = 0;
 172               	.LM5:
 173 003e 1092 0000 		sts UartOverTime,__zero_reg__
  73:task/Comm.c   ****     	 fRx_start = 1;  
 175               	.LM6:
 176 0042 81E0      		ldi r24,lo8(1)
 177 0044 8093 0000 		sts fRx_start,r24
 178               	.L2:
  74:task/Comm.c   ****        }   
  75:task/Comm.c   ****     UartOverTime.WaitTime = _20MS;
 180               	.LM7:
 181 0048 82E0      		ldi r24,lo8(2)
 182 004a 90E0      		ldi r25,hi8(2)
 183 004c 9093 0000 		sts (UartOverTime+1)+1,r25
 184 0050 8093 0000 		sts UartOverTime+1,r24
  76:task/Comm.c   **** 	OS_OPEN_INT();
 186               	.LM8:
 187 0054 8091 0000 		lds r24,Os_Enter_Sum
 188 0058 8150      		subi r24,lo8(-(-1))
 189 005a 8093 0000 		sts Os_Enter_Sum,r24
 190 005e 8091 0000 		lds r24,Os_Enter_Sum
 191 0062 8823      		tst r24
 192 0064 09F4      		brne .L1
 193               	/* #APP */
 194 0066 7894      		sei
 195               	/* #NOAPP */
 196               	.L1:
 197               	/* epilogue: frame size=0 */
 198 0068 FF91      		pop r31
 199 006a EF91      		pop r30
 200 006c BF91      		pop r27
 201 006e AF91      		pop r26
 202 0070 9F91      		pop r25
 203 0072 8F91      		pop r24
 204 0074 7F91      		pop r23
 205 0076 6F91      		pop r22
 206 0078 5F91      		pop r21
 207 007a 4F91      		pop r20
 208 007c 3F91      		pop r19
 209 007e 2F91      		pop r18
 210 0080 0F90      		pop __tmp_reg__
 211 0082 0FBE      		out __SREG__,__tmp_reg__
 212 0084 0F90      		pop __tmp_reg__
 213 0086 1F90      		pop __zero_reg__
 214 0088 1895      		reti
 215               	/* epilogue end (size=17) */
 216               	/* function __vector_11 size 71 (37) */
 218               	.Lscope0:
 220               	.global	__vector_12
 222               	__vector_12:
  77:task/Comm.c   **** }
  78:task/Comm.c   **** 
  79:task/Comm.c   **** //--------------------------------------------------
  80:task/Comm.c   **** SIGNAL (SIG_UART_DATA)                  //UART寄存器空
  81:task/Comm.c   **** {
 224               	.LM9:
 225               	/* prologue: frame size=1 */
 226 008a 1F92      		push __zero_reg__
 227 008c 0F92      		push __tmp_reg__
 228 008e 0FB6      		in __tmp_reg__,__SREG__
 229 0090 0F92      		push __tmp_reg__
 230 0092 1124      		clr __zero_reg__
 231 0094 2F93      		push r18
 232 0096 3F93      		push r19
 233 0098 4F93      		push r20
 234 009a 5F93      		push r21
 235 009c 6F93      		push r22
 236 009e 7F93      		push r23
 237 00a0 8F93      		push r24
 238 00a2 9F93      		push r25
 239 00a4 AF93      		push r26
 240 00a6 BF93      		push r27
 241 00a8 EF93      		push r30
 242 00aa FF93      		push r31
 243 00ac CF93      		push r28
 244 00ae DF93      		push r29
 245 00b0 CDB7      		in r28,__SP_L__
 246 00b2 DEB7      		in r29,__SP_H__
 247 00b4 2197      		sbiw r28,1
 248 00b6 DEBF      		out __SP_H__,r29
 249 00b8 CDBF      		out __SP_L__,r28
 250               	/* prologue end (size=24) */
  82:task/Comm.c   ****     uint8   msg = 0;
 252               	.LM10:
 253 00ba 1982      		std Y+1,__zero_reg__
  83:task/Comm.c   ****     
  84:task/Comm.c   ****     OS_CLOSE_INT();
 255               	.LM11:
 256               	/* #APP */
 257 00bc F894      		cli
 258               	/* #NOAPP */
 259 00be 8091 0000 		lds r24,Os_Enter_Sum
 260 00c2 8F5F      		subi r24,lo8(-(1))
 261 00c4 8093 0000 		sts Os_Enter_Sum,r24
  85:task/Comm.c   ****     if (OSQAccept(&UartTxEvent,&msg) == OS_Q_OK	//从消息队列中取出消息
 263               	.LM12:
 264 00c8 BE01      		movw r22,r28
 265 00ca 6F5F      		subi r22,lo8(-(1))
 266 00cc 7F4F      		sbci r23,hi8(-(1))
 267 00ce 80E0      		ldi r24,lo8(UartTxEvent)
 268 00d0 90E0      		ldi r25,hi8(UartTxEvent)
 269 00d2 00D0      		rcall OSQAccept
 270 00d4 8130      		cpi r24,lo8(1)
 271 00d6 19F4      		brne .L5
  86:task/Comm.c   **** 	){    	
  87:task/Comm.c   ****     	UDR = msg;                      //发送数据
 273               	.LM13:
 274 00d8 8981      		ldd r24,Y+1
 275 00da 8CB9      		out 44-0x20,r24
 276 00dc 01C0      		rjmp .L6
 277               	.L5:
  88:task/Comm.c   ****     } else {
  89:task/Comm.c   ****     	UCSRB &= ~(1 << UDRIE);         //关掉数据寄存器空中断允许	
 279               	.LM14:
 280 00de 5598      		cbi 42-0x20,5
 281               	.L6:
  90:task/Comm.c   ****     }
  91:task/Comm.c   ****     OS_OPEN_INT();    
 283               	.LM15:
 284 00e0 8091 0000 		lds r24,Os_Enter_Sum
 285 00e4 8150      		subi r24,lo8(-(-1))
 286 00e6 8093 0000 		sts Os_Enter_Sum,r24
 287 00ea 8091 0000 		lds r24,Os_Enter_Sum
 288 00ee 8823      		tst r24
 289 00f0 09F4      		brne .L4
 290               	/* #APP */
 291 00f2 7894      		sei
 292               	/* #NOAPP */
 293               	.L4:
 294               	/* epilogue: frame size=1 */
 295 00f4 2196      		adiw r28,1
 296 00f6 F894      		cli
 297 00f8 DEBF      		out __SP_H__,r29
 298 00fa CDBF      		out __SP_L__,r28
 299 00fc DF91      		pop r29
 300 00fe CF91      		pop r28
 301 0100 FF91      		pop r31
 302 0102 EF91      		pop r30
 303 0104 BF91      		pop r27
 304 0106 AF91      		pop r26
 305 0108 9F91      		pop r25
 306 010a 8F91      		pop r24
 307 010c 7F91      		pop r23
 308 010e 6F91      		pop r22
 309 0110 5F91      		pop r21
 310 0112 4F91      		pop r20
 311 0114 3F91      		pop r19
 312 0116 2F91      		pop r18
 313 0118 0F90      		pop __tmp_reg__
 314 011a 0FBE      		out __SREG__,__tmp_reg__
 315 011c 0F90      		pop __tmp_reg__
 316 011e 1F90      		pop __zero_reg__
 317 0120 1895      		reti
 318               	/* epilogue end (size=23) */
 319               	/* function __vector_12 size 78 (31) */
 324               	.Lscope1:
 326               	.global	__vector_13
 328               	__vector_13:
  92:task/Comm.c   **** }
  93:task/Comm.c   **** 
  94:task/Comm.c   **** 
  95:task/Comm.c   **** //-----------------------------------------
  96:task/Comm.c   **** SIGNAL (SIG_UART_TRANS)              //UART发送完成
  97:task/Comm.c   **** {
 330               	.LM16:
 331               	/* prologue: frame size=0 */
 332 0122 1F92      		push __zero_reg__
 333 0124 0F92      		push __tmp_reg__
 334 0126 0FB6      		in __tmp_reg__,__SREG__
 335 0128 0F92      		push __tmp_reg__
 336 012a 1124      		clr __zero_reg__
 337 012c 2F93      		push r18
 338 012e 3F93      		push r19
 339 0130 4F93      		push r20
 340 0132 5F93      		push r21
 341 0134 6F93      		push r22
 342 0136 7F93      		push r23
 343 0138 8F93      		push r24
 344 013a 9F93      		push r25
 345 013c AF93      		push r26
 346 013e BF93      		push r27
 347 0140 EF93      		push r30
 348 0142 FF93      		push r31
 349               	/* prologue end (size=17) */
  98:task/Comm.c   ****    OS_CLOSE_INT();
 351               	.LM17:
 352               	/* #APP */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -