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

📄 d12ic.lst

📁 AVR单片机控制的PDIUSBD12原程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
   1               		.file	"d12ic.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:
 109               	.global	D12_SetAddressEnable
 111               	D12_SetAddressEnable:
   1:d12ic.c       **** //*************************************
   2:d12ic.c       **** //PDIUSB12命令接口 d12ci.c
   3:d12ic.c       **** //编译环境WINAVRGCC
   4:d12ic.c       **** //2007-01-9
   5:d12ic.c       **** //Hjxiang
   6:d12ic.c       **** //*************************************
   7:d12ic.c       **** //标准C头文件
   8:d12ic.c       **** #include <stdint.h>
   9:d12ic.c       **** #include <stdlib.h>
  10:d12ic.c       **** //AVR头文件
  11:d12ic.c       **** #include <avr/io.h>
  12:d12ic.c       **** #include <avr/signal.h>
  13:d12ic.c       **** #include <avr/delay.h>
  14:d12ic.c       **** //自定义头文件
  15:d12ic.c       **** #include "usb.h"
  16:d12ic.c       **** #include "d12ic.h"
  17:d12ic.c       **** 
  18:d12ic.c       **** //宏定义
  19:d12ic.c       **** #define D12_DATA		0x02		//选择数据指令(A0=0)
  20:d12ic.c       **** #define D12_COMMAND		0x03		//选择命令指令(A0=1)
  21:d12ic.c       **** #define D12_FULLEMPTY	0x01		//端点缓冲区满
  22:d12ic.c       **** 
  23:d12ic.c       **** 
  24:d12ic.c       **** 
  25:d12ic.c       **** //设置地址使能命令
  26:d12ic.c       **** void D12_SetAddressEnable(unsigned char bAddress,unsigned char bEnable)
  27:d12ic.c       **** {
 113               	.LM1:
 114               	/* prologue: frame size=0 */
 115 0000 1F93      		push r17
 116 0002 CF93      		push r28
 117               	/* prologue end (size=2) */
 118 0004 C82F      		mov r28,r24
 119 0006 162F      		mov r17,r22
  28:d12ic.c       **** 	outportb(D12_COMMAND,0xD0);
 121               	.LM2:
 122 0008 60ED      		ldi r22,lo8(208)
 123 000a 70E0      		ldi r23,hi8(208)
 124 000c 83E0      		ldi r24,lo8(3)
 125 000e 90E0      		ldi r25,hi8(3)
 126 0010 0E94 0000 		call outportb
  29:d12ic.c       **** 	if(bEnable)
 128               	.LM3:
 129 0014 1111      		cpse r17,__zero_reg__
  30:d12ic.c       **** 		bAddress|=0x80;
 131               	.LM4:
 132 0016 C068      		ori r28,lo8(-128)
 133               	.L2:
  31:d12ic.c       **** 	outportb(D12_DATA,bAddress);
 135               	.LM5:
 136 0018 8C2F      		mov r24,r28
 137 001a 9927      		clr r25
 138 001c BC01      		movw r22,r24
 139 001e 82E0      		ldi r24,lo8(2)
 140 0020 90E0      		ldi r25,hi8(2)
 141 0022 0E94 0000 		call outportb
 142               	/* epilogue: frame size=0 */
 143 0026 CF91      		pop r28
 144 0028 1F91      		pop r17
 145 002a 0895      		ret
 146               	/* epilogue end (size=3) */
 147               	/* function D12_SetAddressEnable size 23 (18) */
 149               	.Lscope0:
 152               	.global	D12_SetEndpointEnable
 154               	D12_SetEndpointEnable:
  32:d12ic.c       **** }
  33:d12ic.c       **** //设置端点使能命令
  34:d12ic.c       **** void D12_SetEndpointEnable(unsigned char bEnable)
  35:d12ic.c       **** {
 156               	.LM6:
 157               	/* prologue: frame size=0 */
 158 002c 1F93      		push r17
 159               	/* prologue end (size=1) */
  36:d12ic.c       **** 	outportb(D12_COMMAND,0xD8);
 161               	.LM7:
 162 002e 68ED      		ldi r22,lo8(216)
 163 0030 70E0      		ldi r23,hi8(216)
 164 0032 83E0      		ldi r24,lo8(3)
 165 0034 90E0      		ldi r25,hi8(3)
 166 0036 0E94 0000 		call outportb
  37:d12ic.c       **** 	if(bEnable)
  38:d12ic.c       **** 		outportb(D12_DATA,1);
  39:d12ic.c       **** 	else
  40:d12ic.c       **** 		outportb(D12_DATA,1);
 168               	.LM8:
 169 003a 61E0      		ldi r22,lo8(1)
 170 003c 70E0      		ldi r23,hi8(1)
 171 003e 82E0      		ldi r24,lo8(2)
 172 0040 90E0      		ldi r25,hi8(2)
 173 0042 0E94 0000 		call outportb
 174               	/* epilogue: frame size=0 */
 175 0046 1F91      		pop r17
 176 0048 0895      		ret
 177               	/* epilogue end (size=2) */
 178               	/* function D12_SetEndpointEnable size 15 (12) */
 180               	.Lscope1:
 184               	.global	D12_SetMode
 186               	D12_SetMode:
  41:d12ic.c       **** }
  42:d12ic.c       **** //设置模式命令
  43:d12ic.c       **** void D12_SetMode(unsigned char bConfig,unsigned char bClkDiv)
  44:d12ic.c       **** {
 188               	.LM9:
 189               	/* prologue: frame size=0 */
 190 004a 0F93      		push r16
 191 004c 1F93      		push r17
 192               	/* prologue end (size=2) */
 193 004e 182F      		mov r17,r24
 194 0050 062F      		mov r16,r22
  45:d12ic.c       **** 	outportb(D12_COMMAND,0xF3);
 196               	.LM10:
 197 0052 63EF      		ldi r22,lo8(243)
 198 0054 70E0      		ldi r23,hi8(243)
 199 0056 83E0      		ldi r24,lo8(3)
 200 0058 90E0      		ldi r25,hi8(3)
 201 005a 0E94 0000 		call outportb
  46:d12ic.c       **** 	outportb(D12_DATA,bConfig);
 203               	.LM11:
 204 005e 812F      		mov r24,r17
 205 0060 9927      		clr r25
 206 0062 BC01      		movw r22,r24
 207 0064 82E0      		ldi r24,lo8(2)
 208 0066 90E0      		ldi r25,hi8(2)
 209 0068 0E94 0000 		call outportb
  47:d12ic.c       **** 	outportb(D12_DATA,bClkDiv);
 211               	.LM12:
 212 006c 802F      		mov r24,r16
 213 006e 9927      		clr r25
 214 0070 BC01      		movw r22,r24
 215 0072 82E0      		ldi r24,lo8(2)
 216 0074 90E0      		ldi r25,hi8(2)
 217 0076 0E94 0000 		call outportb
 218               	/* epilogue: frame size=0 */
 219 007a 1F91      		pop r17
 220 007c 0F91      		pop r16
 221 007e 0895      		ret
 222               	/* epilogue end (size=3) */
 223               	/* function D12_SetMode size 27 (22) */
 225               	.Lscope2:
 228               	.global	D12_SetDMA
 230               	D12_SetDMA:
  48:d12ic.c       **** 
  49:d12ic.c       **** }
  50:d12ic.c       **** //设置DMA
  51:d12ic.c       **** void D12_SetDMA(unsigned char bMode)
  52:d12ic.c       **** {
 232               	.LM13:
 233               	/* prologue: frame size=0 */
 234 0080 1F93      		push r17
 235               	/* prologue end (size=1) */
 236 0082 182F      		mov r17,r24
  53:d12ic.c       **** 	outportb(D12_COMMAND,0xFB);
 238               	.LM14:
 239 0084 6BEF      		ldi r22,lo8(251)
 240 0086 70E0      		ldi r23,hi8(251)
 241 0088 83E0      		ldi r24,lo8(3)
 242 008a 90E0      		ldi r25,hi8(3)
 243 008c 0E94 0000 		call outportb
  54:d12ic.c       **** 	outportb(D12_DATA,bMode);
 245               	.LM15:
 246 0090 812F      		mov r24,r17
 247 0092 9927      		clr r25
 248 0094 BC01      		movw r22,r24
 249 0096 82E0      		ldi r24,lo8(2)
 250 0098 90E0      		ldi r25,hi8(2)
 251 009a 0E94 0000 		call outportb
 252               	/* epilogue: frame size=0 */
 253 009e 1F91      		pop r17
 254 00a0 0895      		ret
 255               	/* epilogue end (size=2) */
 256               	/* function D12_SetDMA size 17 (14) */
 258               	.Lscope3:
 260               	.global	D12_ReadInterruptRegister
 262               	D12_ReadInterruptRegister:
  55:d12ic.c       **** 
  56:d12ic.c       **** }
  57:d12ic.c       **** //读取中断寄存器
  58:d12ic.c       **** unsigned short D12_ReadInterruptRegister(void)
  59:d12ic.c       **** {
 264               	.LM16:
 265               	/* prologue: frame size=0 */
 266 00a2 1F93      		push r17
 267               	/* prologue end (size=1) */
  60:d12ic.c       **** 	unsigned char b1;
  61:d12ic.c       **** 	unsigned int j;
  62:d12ic.c       **** 	outportb(D12_COMMAND,0xF4);
 269               	.LM17:
 270 00a4 64EF      		ldi r22,lo8(244)
 271 00a6 70E0      		ldi r23,hi8(244)
 272 00a8 83E0      		ldi r24,lo8(3)
 273 00aa 90E0      		ldi r25,hi8(3)
 274 00ac 0E94 0000 		call outportb
  63:d12ic.c       **** 	b1=inportb(D12_DATA)&0xff;
 276               	.LM18:
 277 00b0 82E0      		ldi r24,lo8(2)
 278 00b2 90E0      		ldi r25,hi8(2)
 279 00b4 0E94 0000 		call inportb
 280 00b8 182F      		mov r17,r24
  64:d12ic.c       **** 	j=inportb(D12_DATA)&0x01;
 282               	.LM19:
 283 00ba 82E0      		ldi r24,lo8(2)
 284 00bc 90E0      		ldi r25,hi8(2)
 285 00be 0E94 0000 		call inportb
 286 00c2 8170      		andi r24,lo8(1)
 287 00c4 9070      		andi r25,hi8(1)
  65:d12ic.c       **** //	put_c(b1);
  66:d12ic.c       **** //	put_c(j);
  67:d12ic.c       **** 	j<<=8;
 289               	.LM20:
 290 00c6 982F      		mov r25,r24
 291 00c8 8827      		clr r24
  68:d12ic.c       **** 	j+=b1;
  69:d12ic.c       **** 	return j;
  70:d12ic.c       **** }
 293               	.LM21:
 294 00ca 810F      		add r24,r17
 295 00cc 911D      		adc r25,__zero_reg__
 296               	/* epilogue: frame size=0 */
 297 00ce 1F91      		pop r17
 298 00d0 0895      		ret
 299               	/* epilogue end (size=2) */
 300               	/* function D12_ReadInterruptRegister size 24 (21) */
 306               	.Lscope4:
 309               	.global	D12_SelectEndpoint
 311               	D12_SelectEndpoint:
  71:d12ic.c       **** //端点选择命令
  72:d12ic.c       **** unsigned char D12_SelectEndpoint(unsigned char bEndp)
  73:d12ic.c       **** {
 313               	.LM22:
 314               	/* prologue: frame size=0 */
 315               	/* prologue end (size=0) */
  74:d12ic.c       **** 	unsigned char c;
  75:d12ic.c       **** 	outportb(D12_COMMAND,bEndp);
 317               	.LM23:
 318 00d2 9927      		clr r25
 319 00d4 BC01      		movw r22,r24
 320 00d6 83E0      		ldi r24,lo8(3)
 321 00d8 90E0      		ldi r25,hi8(3)
 322 00da 0E94 0000 		call outportb
  76:d12ic.c       **** 	c=inportb(D12_DATA);
 324               	.LM24:
 325 00de 82E0      		ldi r24,lo8(2)
 326 00e0 90E0      		ldi r25,hi8(2)
 327 00e2 0E94 0000 		call inportb
  77:d12ic.c       **** 	return c;
  78:d12ic.c       **** }
 329               	.LM25:
 330 00e6 9927      		clr r25
 331               	/* epilogue: frame size=0 */
 332 00e8 0895      		ret
 333               	/* epilogue end (size=1) */
 334               	/* function D12_SelectEndpoint size 12 (11) */
 336               	.Lscope5:

⌨️ 快捷键说明

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