📄 375interface.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 + -