📄 usbd12.s
字号:
.byte 0
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB/SKEY.C
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.dbsym e USB_FLAG _USB_FLAG X
_DeviceDescr::
.blkb 1
.area idata
.byte 18
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 1
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 16
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 220
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 16
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 113
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 4
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 102
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 6
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 1
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 1
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.dbsym e DeviceDescr _DeviceDescr X
_usb_descr::
.blkb 1
.area idata
.byte 9
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 2
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 46
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 1
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 1
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 160
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 50
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 9
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 4
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 4
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 220
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 160
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 176
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 7
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 5
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 129
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 3
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 16
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 10
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 7
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 5
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 1
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 3
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 16
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 10
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 7
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 5
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 130
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 2
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 64
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 10
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 7
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 5
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 2
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 2
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 64
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkb 1
.area idata
.byte 10
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.dbsym e usb_descr _usb_descr X
_StandardDeviceRequest::
.blkw 1
.area idata
.word PL_Get_status
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkw 1
.area idata
.word PL_Clr_feature
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkw 1
.area idata
.word PL_Reserved
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkw 1
.area idata
.word PL_Set_feature
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkw 1
.area idata
.word PL_Reserved
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkw 1
.area idata
.word PL_Set_addr
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkw 1
.area idata
.word PL_Get_descriptor
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkw 1
.area idata
.word PL_Reserved
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkw 1
.area idata
.word PL_Get_config
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkw 1
.area idata
.word PL_Set_config
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkw 1
.area idata
.word PL_Get_interface
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkw 1
.area idata
.word PL_Set_interface
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkw 1
.area idata
.word PL_Reserved
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkw 1
.area idata
.word PL_Reserved
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkw 1
.area idata
.word PL_Reserved
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.blkw 1
.area idata
.word PL_Reserved
.area data(ram, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.dbsym e StandardDeviceRequest _StandardDeviceRequest A[32:16]pfV
.area text(rom, con, rel)
.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\20_USB\USBD12.C
.dbfunc e D12_init _D12_init fV
.even
_D12_init::
.dbline -1
.dbline 227
; uchar bConfigurationValue;
; uchar iConfiguration;
; uchar bmAttributes;
; uchar MaxPower;
; } USB_CONFIGURATION_DESCRIPTOR;
; /*********** USB 端点描述符结构体 ****************/
; typedef struct _USB_ENDPOINT_DESCRIPTOR
; {
; uchar bLength;
; uchar bDescriptorType;
; uchar bEndpointAddress;
; uchar bmAttributes;
; uchar wMaxPacketSize0;
; uchar wMaxPacketSize1;
; uchar bInterval;
; } USB_ENDPOINT_DESCRIPTOR;
; /*********** D12 USB 各种描述符结构体 *********************/
; typedef struct _USB_DESCRIPTOR
; {
; USB_CONFIGURATION_DESCRIPTOR ConfigDescr; //配置描述符
; USB_INTERFACE_DESCRIPTOR InterfaceDescr; //接口描述符
; USB_ENDPOINT_DESCRIPTOR EP1_TXDescr; //端点1输入描述符
; USB_ENDPOINT_DESCRIPTOR EP1_RXDescr; //端点1输出描述符
; USB_ENDPOINT_DESCRIPTOR EP2_TXDescr; //端点2输入描述符
; USB_ENDPOINT_DESCRIPTOR EP2_RXDescr; //端点2输出描述符
; } USB_DESCRIPTOR;
; CONTROL_XFER ControlData;
; uchar GenEpBuf[EP1_PACKET_SIZE]; //端点1接收缓冲区
; uchar EpBuf[EP2_PACKET_SIZE]; //端点2接收缓冲区
; //#pragma data:code
; //设备描述符
; USB_DEVICE_DESCRIPTOR DeviceDescr =
; {
; sizeof(USB_DEVICE_DESCRIPTOR), //设备描述符长度,= 12H
; USB_DEVICE_DESCRIPTOR_TYPE, //设备描述符类型,= 01H
; 0x00,0x10, //协议版本,= 1.10
; USB_CLASS_CODE_TEST_CLASS_DEVICE, //测试设备类型, = 0DCH
; 0, 0, //设备子类,设备协议
; EP0_PACKET_SIZE, //端点0最大数据包大小,= 10H
; 0x71,0x04, //PHILIPS公司的设备ID
; 0x66,0x06, //设备制造商定的产品ID
; 0x00,0x01, //设备系列号
; 0, 0, 0, //索引
; 1 //可能的配置数
; };
; USB_DESCRIPTOR usb_descr =
; {
; //配置描述符
; {
; sizeof(USB_CONFIGURATION_DESCRIPTOR), //配置描述符长度,= 09H
; USB_CONFIGURATION_DESCRIPTOR_TYPE, //配置描述符类型,= 02H
; CONFIG_DESCRIPTOR_LENGTH,0x00, //描述符总长度, = 002EH
; 1, //只支持1个接口
; 1, //配置值
; 0, //字符串描述符指针(无)
; 0xa0, //自供电,支持远程唤醒
; 0x32 //最大功耗(100mA)
; },
; //接口描述符
; {
; sizeof(USB_INTERFACE_DESCRIPTOR), //接口描述符长度,= 09H
; USB_INTERFACE_DESCRIPTOR_TYPE, //接口描述符类型,= 04H
; 0, //接口数,只有1个
; 0, //可选配置,只有1个
; NUM_ENDPOINTS, //除端点0的端点索引数目,= 04H
; USB_CLASS_CODE_TEST_CLASS_DEVICE, //测试设备类型,= 0DCH
; USB_SUBCLASS_CODE_TEST_CLASS_D12, //子类代码,= 0A0H
; USB_PROTOCOL_CODE_TEST_CLASS_D12, //协议代码,= 0B0H
; 0 //字符串描述符索引
; },
; //端点描述符,端点1输入
; {
; sizeof(USB_ENDPOINT_DESCRIPTOR), //端点描述符长度,= 07H
; USB_ENDPOINT_DESCRIPTOR_TYPE, //端点描述符类型,= 05H
; 0x81, //端点1 IN
; USB_ENDPOINT_TYPE_INTERRUPT, //中断传输, = 03H
; EP1_PACKET_SIZE,0x00, //端点最大包的大小,= 0010H
; 10 //传输间隔时间,= 10ms
; },
; //端点描述符,端点1输出
; {
; sizeof(USB_ENDPOINT_DESCRIPTOR), //端点描述符长度,= 07H
; USB_ENDPOINT_DESCRIPTOR_TYPE, //端点描述符类型,= 05H
; 0x1, //端点1 OUT
; USB_ENDPOINT_TYPE_INTERRUPT, //中断传输,= 03H
; EP1_PACKET_SIZE,0x00, //端点最大包的大小,= 0010H
; 10 //传输间隔时间,= 10ms
; },
; //端点2输入
; {
; sizeof(USB_ENDPOINT_DESCRIPTOR), //端点描述符长度,= 07H
; USB_ENDPOINT_DESCRIPTOR_TYPE, //端点描述符类型,= 05H
; 0x82, //端点2 OUT
; USB_ENDPOINT_TYPE_BULK, //批量传输,= 02H
; EP2_PACKET_SIZE,0x00, //端点最大包的大小,= 0040H
; 10 //批量传输时该设备无效
; },
; //端点2输出
; {
; sizeof(USB_ENDPOINT_DESCRIPTOR), //端点描述符长度,= 07H
; USB_ENDPOINT_DESCRIPTOR_TYPE, //端点描述符类型,= 05H
; 0x2, //端点2 IN
; USB_ENDPOINT_TYPE_BULK, //批量传输,= 02H
; EP2_PACKET_SIZE,0x00, //端点最大包的大小,= 0040H
; 10 //批量传输时该设备无效
; }
; };
; //#pragma data:data
; //#pragma data:code
; void (*StandardDeviceRequest[])(void)=
; {
; Get_status,
; Clr_feature,
; Reserved,
; Set_feature,
; Reserved,
; Set_addr,
; Get_descriptor,
; Reserved,
; Get_config,
; Set_config,
; Get_interface,
; Set_interface,
; Reserved,
; Reserved,
; Reserved,
; Reserved
; };
; //#pragma data:data
; /*******************************************
; 函数名称: D12_init
; 功 能: 初始化D12接口(包括数据接口和控制接口)
; 参 数: 无
; 返回值 : 无
; /********************************************/
; void D12_init(void)
; {
.dbline 228
; DDRA|=BIT(CSUSB); //USB的573锁存端设置为输出
sbi 0x1a,7
.dbline 229
; PORTA&=~BIT(CSUSB); //573锁存端关闭
cbi 0x1b,7
.dbline 230
; USBDAT_DDR|=0xFF; //数据端口设置为输出
in R24,0x17
ori R24,255
out 0x17,R24
.dbline 231
; USBCTL_DDR|=BIT(WR_N)|BIT(RD_N)|BIT(C_D)|BIT(D12_CS);//控制引脚设置为输出
in R24,0x11
ori R24,240
out 0x11,R24
.dbline 232
; USBCTL_DDR&=~BIT(D12_INT); //中断引脚设置为输入
cbi 0x11,3
.dbline 233
; USBCTL_PORT|=BIT(D12_INT); //上拉使能
sbi 0x12,3
.dbline 234
; USBCTL_PORT|=BIT(WR_N)|BIT(RD_N)|BIT(D12_CS); //控制引脚无效
in R24,0x12
ori R24,176
out 0x12,R24
.dbline 235
; PORTA|=BIT(CSUSB); //送出控制信号
sbi 0x1b,7
.dbline 237
;
; SREG|=BIT(GLOBAL); //使能全局中断
bset 7
.dbline 238
; MCUCR&=0xF3; //外部中断1采用低电平触发
in R24,0x35
andi R24,243
out 0x35,R24
.dbline 239
; GICR|=BIT(EXTINT1); //使能外部中断0和1
in R24,0x3b
ori R24,128
out 0x3b,R24
.dbline 241
;
; USBCTL_PORT&=~BIT(D12_CS);
cbi 0x12,7
.dbline -2
.dbline 242
; }
L44:
.dbline 0 ; func end
ret
.dbend
.dbfunc e OutB _OutB fV
; dat -> R20
; cmd -> R22
.even
_OutB::
xcall push_gset2
mov R20,R18
mov R22,R16
.dbline -1
.dbline 251
; /*******************************************
; 函数名称: OutB
; 功 能: 向D12写入一个字节数据或者命令
; 参 数: cmd--命令标识(为CMD是命令,为DAT是数据)
; dat--要写入的字节数据
; 返回值 : 无
; /********************************************/
; void OutB(uchar cmd,uchar dat)
; {
.dbline 252
; if(cmd==CMD)
cpi R22,1
brne L46
.dbline 253
; {
.dbline 254
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -