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

📄 avr_pq1a.h

📁 avr usb Visual C++环境下的开发
💻 H
📖 第 1 页 / 共 2 页
字号:
#define RE_H     65110       //1175
#define REA_H    65134       //1245 
#define MI_H     65157       //1318 
#define FA_H     65178       //1397
#define FAA_H    65198       //1480
#define SO_H     65217       //1568 
#define SOA_H    65235       //1661
#define LA_H     65252       //1760 
#define LAA_H    65268       //1865
#define TI_H     65283       //1976 
#define ZERO     0           //休止符
//十进制:     0
//休止符:     0
 
//十进制:     1     2     3     4     5     6     7     8     9     10    11     12
//低音  :     1     #1    2     #2    3     4     #4    5     #5    6     #6     7
 
//十进制:     13    14    15    16    17    18    19    20    21    22    23     24
// 中音 :     1     #1    2     #2    3     4     #4    5     #5    6     #6     7

//十进制:     25    26    27    28    29    30    31    32    33    34    35     36
// 高音 :     1     #1    2     #2    3     4     #4    5     #5    6     #6     7

/******************继电器常量******************/
#define RELAY PC6	//继电器管脚宏定义

/******************异步串口常量******************/
#define MCLK  8000000 	//主时钟频率宏定义

/******************RTC常量******************/
#define RTC_CLK   	PB7
#define RTC_DATA  	PB5
#define RTC_CS    	PC7
	//命令
#define RD	  	0x01
#define WR	  	0x00
#define C_SEC		0x80	//秒
#define C_MIN		0x82	//分
#define C_HR		0x84	//时
#define C_DAY		0x86	//日
#define C_MTH		0x88	//月
#define C_WK		0x8A	//星期 DATE
#define C_YR		0x8C	//年
#define C_WP		0x8E	//控制(写保护)
#define C_CHARGE	0x90	//涓流充电
#define C_BURST		0xBE	//时钟多字节
	//配置
#define CLK_HALT		0x80	//停止时钟控制位    SECOND	bit7
#define CLK_START		0x00	//启动时钟
#define M12_24			0x80	//12/24小时值选择位 HOUR		bit7 
#define PROTECT			0x80	//写保护控制位      CONTROL	bit7 
#define UPROTECT		0x00	//写保护控制位      CONTROL	bit7 
	//涓流充电控制常量
#define TC_D1R2			0xA5	//high 1 Diode +2K Resistors  
#define TC_D2R8			0xAB	//low  2 Diodes+8K Resistors  
#define TC_DISABLED		0x00	//Disabled(TCS<>1010 or DS=00 or RS=00)
	//RAM 命令
#define C_RAMBASE		0xC0	//RAM0~RAM30<<1 地址需左移一位 


/******************USB常量******************/
#define CSUSB   PA7
#define D12_INT PD3
#define WR_N    PD4
#define RD_N    PD5
#define C_D     PD6
#define D12_CS  PD7
#define USBCTL_DDR  DDRD
#define USBCTL_PORT PORTD
#define USBDAT_DDR  DDRB
#define USBDAT_PORT PORTB
#define USBDAT_PIN PINB

#define CMD     0x01
#define DAT     0x00

#define UEN_GINT()  SREG&=~BIT(7)
#define EN_GINT()  SREG|=BIT(7)

#define MSB(x)    (((x) >> 8) & 0xFF)

#define MAX_ENDPOINTS      (uchar)0x3

#define NOLAZYCLOCK			0x02
#define CLOCKRUNNING        		0x04
#define INTERRUPTMODE			0x08
#define SOFTCONNECT			0x10
#define ENDP_NONISO			0x00
#define ENDP_ISOOUT			0x40
#define ENDP_ISOIN			0x80
#define ENDP_ISOIO			0xC0

#define CLOCK_12M			0x03
#define CLOCK_4M			0x0b
#define SETTOONE            		0x40
#define SOFONLY				0x80

#define NORMALPLUSSOF			0x20
#define ENDP4INTENABLE			0x40
#define ENDP5INTENABLE			0x80

#define INT_ENDP0OUT			0x01
#define INT_ENDP0IN			0x02
#define INT_ENDP1OUT			0x04
#define INT_ENDP1IN			0x08
#define INT_ENDP2OUT			0x10
#define INT_ENDP2IN			0x20
#define INT_BUSRESET			0x40
#define INT_SUSPENDCHANGE		0x80

#define SETUPPACKET			0x20
#define BUFFER0FULL			0x20
#define BUFFER1FULL			0x40

#define FULLEMPTY			0x01
#define STALL				0x02

#define USB_IDLE           0
#define USB_TRANSMIT       1
#define USB_RECEIVE        2

#define MAX_CTLDAT_SIZE	8

#define USB_ENDPOINT_DIRECTION_MASK     0x80
#define USB_REQUEST_MASK         (uchar)0x0F
#define USB_REQUEST_TYPE_MASK    (uchar)0x60
#define USB_STANDARD_REQUEST     (uchar)0x00

#define DEVICE_ADDRESS_MASK      0x7F

#define USB_FEATURE_ENDPOINT_STALL          (uint)0x0000
#define USB_FEATURE_REMOTE_WAKEUP           (uint)0x0001

#define EP0_PACKET_SIZE    16
#define EP1_PACKET_SIZE    16
#define EP2_PACKET_SIZE    64

#define USB_RECIPIENT            (uchar)0x1F
#define USB_RECIPIENT_DEVICE     (uchar)0x00
#define USB_RECIPIENT_INTERFACE  (uchar)0x01
#define USB_RECIPIENT_ENDPOINT   (uchar)0x02

#define USB_DEVICE_DESCRIPTOR_TYPE                0x01
#define USB_CONFIGURATION_DESCRIPTOR_TYPE         0x02
#define USB_STRING_DESCRIPTOR_TYPE                0x03
#define USB_INTERFACE_DESCRIPTOR_TYPE             0x04
#define USB_ENDPOINT_DESCRIPTOR_TYPE              0x05
#define USB_POWER_DESCRIPTOR_TYPE                 0x06

/* 设备描述符: 测试设备类型 */
#define USB_CLASS_CODE_TEST_CLASS_DEVICE                    0xdc
/*****   D12 配置描述符长度  ******/
#define CONFIG_DESCRIPTOR_LENGTH    sizeof(USB_CONFIGURATION_DESCRIPTOR) \
									+ sizeof(USB_INTERFACE_DESCRIPTOR) \
									+ (NUM_ENDPOINTS * sizeof(USB_ENDPOINT_DESCRIPTOR))
/*****   D12 接口描述符中: 除端点0的端点索引数目  ******/
#define NUM_ENDPOINTS	4
/* 设备描述符: 测试设备类型 */
#define USB_CLASS_CODE_TEST_CLASS_DEVICE                    0xdc

/* 接口描述符: 子类代码 */
#define USB_SUBCLASS_CODE_TEST_CLASS_D12                    0xA0

/* 接口描述符: 协议代码 */
#define USB_PROTOCOL_CODE_TEST_CLASS_D12                    0xB0
	/*******************************************************
	** USB 端点描述符结构体: 端点属性
	********************************************************/
#define USB_ENDPOINT_TYPE_MASK                    0x03

#define USB_ENDPOINT_TYPE_CONTROL                 0x00
#define USB_ENDPOINT_TYPE_ISOCHRONOUS             0x01
#define USB_ENDPOINT_TYPE_BULK                    0x02
#define USB_ENDPOINT_TYPE_INTERRUPT               0x03

/******************通用子函数******************/
void Delayms(uint MS);

/******************LED子函数******************/
void One_led(uchar number,uchar light);
void All_led(uchar light);
void Flow_LED(uchar MS);
void Flash_LED(uchar number,uchar MS);

/******************数码管子函数******************/
void One_smg_display(uchar data,uchar number);
void All_smg_display(uchar *pdata);
void Cycle_smg_display(uchar *pdata);

/******************1602液晶管子函数******************/
void LCD1602_portini(void);
uchar LCD1602_readbyte(uchar DatCmd);
void LCD1602_sendbyte(uchar DatCmd, uchar dByte);
void LCD1602_sendstr(uchar *ptString);
void LCD1602_clear(void);
uchar LCD1602_readBF(void);
void LCD1602_gotoXY(uchar Row, uchar Col);
void LCD1602_initial(void);

/******************USB函数******************/
void D12_init(void);
void OutB(uchar cmd,uchar dat);
uchar InB(void);
void Set_addren(uchar addr, uchar enable);
void Set_EPen(uchar enable);
void Set_mode(uchar config,uchar clkdiv);
void Set_DMA(uchar bMode);
uint Read_IntR(void);
uchar Sel_EP(uchar endp);
uchar Read_EPsta(uchar endp);
uchar Read_LttransSta(uchar endp);
void Set_EPsta(uchar endp,uchar stall);
void Set_Sresume(void);
uchar Read_EP(uchar endp,uchar len,uchar * buf);
uchar Write_EP(uchar endp,uchar len,uchar * buf);
void Ack_EP(uchar endp);
void Clear_buf(uchar endp);
void Stall_ep0(void);
void S_trans(uchar * buf, uchar len);

void Ep0_rxdone(void);
void Ep0_txdone(void);
void Ep1_txdone(void);
void Ep1_rxdone(void);
void Ep2_txdone(void);
void Ep2_rxdone(void);

void Reserved(void);
void Get_status(void);
void Clr_feature(void);
void Set_feature(void);
void Set_addr(void);
void Get_descriptor(void);
void Get_config(void);
void Set_config(void);
void Get_interface(void);
void Set_interface(void);
void USB_reconnect(void);
void Control_handler(void);
void Uart_sendB(uchar sendB);

⌨️ 快捷键说明

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