parallel port core driven.asm

来自「ADI 公司的DSP ADSP21262 EZ-KIT LITE开发板的全部源代」· 汇编 代码 · 共 60 行

ASM
60
字号
/* Register Definitions */
#define PPCTL       0x1800
#define TXPP        0x1808
#define RXPP        0x1809
#define EIPP        0x1810
#define EMPP        0x1811
#define ECPP        0x1812

/* Register Bit Definitions */
#define PPEN    0x00000001
#define PPDUR20 0x00000026
#define PPBHC   0x00000040
#define PPTRAN  0x00000200
#define PPBS    0x00020000

/* Source Buffer */
.section/dm seg_dmda;
.var source[8] = 0x11111111,
                 0x22222222,
                 0x33333333,
                 0x44444444,
                 0x55555555,
                 0x66666666,
                 0x77777777,
                 0x88888888;

/* Main code section */
.global _main;
.section/pm seg_pmco;
_main:
i4=source;
m4=1;

/* setup ppdma registers for core use */
r0=1;               dm(EMPP)=r0;
r0=0x1200000;       dm(EIPP)=r0;
/* For 8-bit external memory, the External count is
    four times the internal count */
r0=LENGTH(source) * 4;      dm(ECPP)=r0;

ustat3=  PPEN|      /* enable port */
         PPTRAN|    /* transmit (write) */
         PPBHC|     /* implement a bus hold cycle*/
         PPDUR20;   /* make pp data cycles last for a */
                    /* duration of 20 cclk cycles */
dm(PPCTL)=ustat3;

/* loop to write 10 words into TXPP */
lcntr=10, do core_writes until lce;
write:
r0=dm(i4,m4);
core_writes: dm(TXPP)=r0;


/*poll to ensure parallel port has completed the transfer*/
waiting: ustat4=dm(PPCTL);
bit tst ustat4 PPBS;
if tf jump waiting;

_main.end: jump(pc,0);

⌨️ 快捷键说明

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