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

📄 375interface.lis

📁 mega128+VS1003做的mp3的程序 可以用WINAVR编译
💻 LIS
字号:
                        .module _375interface.c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\software\MP3程序\Ch375b\375interface.c
 0000                   .dbfunc e CH375_PORT_INIT _CH375_PORT_INIT fV
                        .even
 0000           _CH375_PORT_INIT::
 0000                   .dbline -1
 0000                   .dbline 30
 0000           ; #include <iom64v.h>
 0000           ; #include <macros.h>
 0000           ; #define  UINT8 unsigned char
 0000           ; /******************************************************************************/
 0000           ; 
 0000           ; #define        USED_BUS               //屏闭后使用I/O模拟总线操作
 0000           ; 
 0000           ; #ifdef USED_BUS
 0000           ; #define CH375_CMD_PORT_ADDR 0xfe00             //命令口
 0000           ; #define CH375_DAT_PORT_ADDR   0xfc00           //数据口
 0000           ; #endif
 0000           ; #define  CH375_INT BIT(1)                              //CH375联络信号
 0000           ; 
 0000           ; 
 0000           ; 
 0000           ; #ifndef USED_BUS
 0000           ; #define  CH375_CS  BIT(0)
 0000           ; #define  CH375_A0  BIT(1)
 0000           ; #define  CH375_RD  BIT(1)
 0000           ; #define  CH375_WR  BIT(0)
 0000           ; void mDelay1uS(void)  /* 至少延时1uS,根据单片机主频调整 */
 0000           ; {
 0000           ;       //UINT8 i;
 0000           ;       //for ( i = 1; i != 0; i -- );
 0000           ;       NOP();
 0000           ; }
 0000           ; #endif
 0000           ; 
 0000           ; void CH375_PORT_INIT( )  /* 由于使用通用I/O模块并口读写时序,所以进行初始化 */
 0000           ; {
 0000                   .dbline 32
 0000           ;       #ifdef USED_BUS
 0000           ;       Print_str("Init CH375 used External bus...\r\n");
 0000 00E0              ldi R16,<L2
 0002 10E0              ldi R17,>L2
 0004 0E940000          xcall _Print_str
 0008                   .dbline 42
 0008           ;       #else 
 0008           ;       Print_str("Init CH375 used I/O bus...\r\n");
 0008           ;       DDRA = 0x00;  /* 设置8位并口为输入 */
 0008           ;       PORTC=CH375_CS; //设置CS,WR,RD默认为高电平 0x08为3310引脚*/
 0008           ;       DDRC =CH375_CS|CH375_A0;  /* 设置CS,WR,RD,A0为输出,设置INT#为输入 */
 0008           ;       PORTG = CH375_WR|CH375_RD;
 0008           ;       DDRG  = CH375_WR|CH375_RD;
 0008           ;       #endif
 0008           ;       
 0008           ;       DDRD &= ~(CH375_INT);
 0008 8998              cbi 0x11,1
 000A                   .dbline -2
 000A           L1:
 000A                   .dbline 0 ; func end
 000A 0895              ret
 000C                   .dbend
 000C                   .dbfunc e xWriteCH375Cmd _xWriteCH375Cmd fV
 000C           ;           mCmd -> R16
                        .even
 000C           _xWriteCH375Cmd::
 000C                   .dbline -1
 000C                   .dbline 46
 000C           ; }
 000C           ; 
 000C           ; void xWriteCH375Cmd( UINT8 mCmd )             /* 外部定义的被CH375程序库调用的子程序,向CH375写命令 */
 000C           ; {
 000C                   .dbline 48
 000C           ;       #ifdef USED_BUS
 000C           ;       *(volatile unsigned char *)CH375_CMD_PORT_ADDR = mCmd; /*通过并口直接读写CH375而非普通I/O模拟 */
 000C 009300FE          sts 65024,R16
 0010                   .dbline 49
 0010           ;       NOP();  /* 至少延时1uS */
 0010 0000              nop
 0012                   .dbline -2
 0012           L3:
 0012                   .dbline 0 ; func end
 0012 0895              ret
 0014                   .dbsym r mCmd 16 c
 0014                   .dbend
 0014                   .dbfunc e xWriteCH375Data _xWriteCH375Data fV
 0014           ;          mData -> R16
                        .even
 0014           _xWriteCH375Data::
 0014                   .dbline -1
 0014                   .dbline 66
 0014           ;       #else
 0014           ;       PORTC |=CH375_A0;// 0x08;  /* 输出A0=1 */
 0014           ;       PORTA = mCmd;  /* 向CH375的并口输出数据 */
 0014           ;       DDRA = 0xFF;  /* 并口D0-D7输出 */
 0014           ;       PORTC &=~(CH375_CS);// 0xF9;  /* 输出有效写控制信号, 写CH375芯片的命令端口, A0=1; CS=0; WR=0; RD=1; */
 0014           ;       PORTG &=~(CH375_WR);
 0014           ;       DDRA = 0xFF;  /* 该操作无意义,仅作延时,CH375要求读写脉冲宽度大于100nS */
 0014           ;       PORTC |= CH375_CS;// 0x07;  /* 输出无效的控制信号, 完成操作CH375芯片, A0=1; CS=1; WR=1; RD=1; */
 0014           ;       PORTG |= CH375_WR|CH375_RD;
 0014           ;       DDRA = 0x00;  /* 禁止数据输出 */
 0014           ;       PORTC &= ~(CH375_A0);  /* 输出A0=0; 可选操作 */
 0014           ;       NOP();//mDelay1uS( ); mDelay1uS( );  /* 至少延时2uS */
 0014           ;       #endif
 0014           ; }
 0014           ; 
 0014           ; void xWriteCH375Data( UINT8 mData )           /* 外部定义的被CH375程序库调用的子程序,向CH375写数据 */
 0014           ; {
 0014                   .dbline 68
 0014           ;       #ifdef USED_BUS
 0014           ;     *(volatile unsigned char *)CH375_DAT_PORT_ADDR = mData; /* 通过并口直接读写CH375而非普通I/O模拟 */
 0014 009300FC          sts 64512,R16
 0018                   .dbline 69
 0018           ;       NOP();  /* 至少延时1uS */
 0018 0000              nop
 001A                   .dbline -2
 001A           L4:
 001A                   .dbline 0 ; func end
 001A 0895              ret
 001C                   .dbsym r mData 16 c
 001C                   .dbend
 001C                   .dbfunc e xReadCH375Data _xReadCH375Data fc
 001C           ;          mData -> R16
                        .even
 001C           _xReadCH375Data::
 001C                   .dbline -1
 001C                   .dbline 84
 001C           ;       #else
 001C           ;       PORTA = mData;  /* 向CH375的并口输出数据 */
 001C           ;       DDRA = 0xFF;  /* 并口D0-D7输出 */
 001C           ;       PORTC &= ~(CH375_A0|CH375_CS);//0xF1;  /* 输出有效写控制信号, 写CH375芯片的数据端口, A0=0; CS=0; WR=0; RD=1; */
 001C           ;       PORTG &= ~(CH375_WR);
 001C           ;       DDRA = 0xFF;  /* 该操作无意义,仅作延时,CH375要求读写脉冲宽度大于100nS */
 001C           ;       PORTC |= CH375_CS;//0x07;  /* 输出无效的控制信号, 完成操作CH375芯片, A0=0; CS=1; WR=1; RD=1; */
 001C           ;       PORTG |= CH375_RD|CH375_WR;
 001C           ;       DDRA = 0x00;  /* 禁止数据输出 */
 001C           ;       NOP();//mDelay1uS( );  /* 至少延时1.2uS */
 001C           ;       #endif
 001C           ; }
 001C           ; 
 001C           ; UINT8 xReadCH375Data( void )                  /* 外部定义的被CH375程序库调用的子程序,从CH375读数据 */
 001C           ; {
 001C                   .dbline 87
 001C           ;       UINT8   mData;
 001C           ;       #ifdef USED_BUS
 001C           ;       NOP();  /* 至少延时1uS */
 001C 0000              nop
 001E                   .dbline 88
 001E           ;       mData = *(volatile unsigned char *)CH375_DAT_PORT_ADDR;  /*通过并口直接读写CH375而非普通I/O模拟 */
 001E 009100FC          lds R16,64512
 0022                   .dbline 89
 0022           ;       return( mData );
 0022                   .dbline -2
 0022           L5:
 0022                   .dbline 0 ; func end
 0022 0895              ret
 0024                   .dbsym r mData 16 c
 0024                   .dbend
                        .area data(ram, con, rel)
 0000                   .dbfile E:\software\MP3程序\Ch375b\375interface.c
 0000           L2:
 0000                   .blkb 34
                        .area idata
 0000 496E6974204348333735207573656420  .byte 'I,'n,'i,'t,32,'C,'H,51,55,53,32,'u,'s,'e,'d,32
 0010 45787465726E616C206275732E2E2E0D  .byte 'E,'x,'t,'e,'r,'n,'a,'l,32,'b,'u,'s,46,46,46,13
 0020 0A00              .byte 10,0
                        .area data(ram, con, rel)
 0022                   .dbfile E:\software\MP3程序\Ch375b\375interface.c

⌨️ 快捷键说明

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