📄 zlg7290_avr.lis
字号:
.module zlg7290_avr.c
.area data(ram, con, rel)
0000 _table::
0000 .blkb 2
.area idata
0000 0102 .byte 1,2
.area data(ram, con, rel)
0002 .blkb 2
.area idata
0002 0408 .byte 4,8
.area data(ram, con, rel)
0004 .blkb 2
.area idata
0004 1020 .byte 16,32
.area data(ram, con, rel)
0006 .blkb 2
.area idata
0006 4080 .byte 64,128
.area data(ram, con, rel)
0008 .dbfile E:\PQ-1A\我的AVR\zlg7290/TWI.C
0008 .dbsym e table _table A[8:8]c
0008 _table1::
0008 .blkb 2
.area idata
0008 0000 .byte 0,0
.area data(ram, con, rel)
000A .dbfile E:\PQ-1A\我的AVR\zlg7290/TWI.C
000A .blkb 2
.area idata
000A 0000 .byte 0,0
.area data(ram, con, rel)
000C .dbfile E:\PQ-1A\我的AVR\zlg7290/TWI.C
000C .blkb 2
.area idata
000C 0000 .byte 0,0
.area data(ram, con, rel)
000E .dbfile E:\PQ-1A\我的AVR\zlg7290/TWI.C
000E .blkb 2
.area idata
000E 0000 .byte 0,0
.area data(ram, con, rel)
0010 .dbfile E:\PQ-1A\我的AVR\zlg7290/TWI.C
0010 .dbsym e table1 _table1 A[8:8]c
.area text(rom, con, rel)
0000 .dbfile E:\PQ-1A\我的AVR\zlg7290/TWI.C
0000 .dbfunc e delay _delay fV
0000 ; x -> R20,R21
0000 ; y -> R22,R23
0000 ; z -> R16,R17
.even
0000 _delay::
0000 0E940000 xcall push_gset2
0004 .dbline -1
0004 .dbline 15
0004 ; #include <iom128v.h>
0004 ; #include <iom128.h>
0004 ; #include <macros.h>
0004 ; //#include <stdio.h> //标准输入输出头文件
0004 ; #include "zlg7290.c"
0004 ;
0004 ; #define uchar unsigned char
0004 ; #define uint unsigned int
0004 ; #pragma interrupt_handler extint0:9
0004 ; //#pragma interrupt_handler miao:15
0004 ;
0004 ; uint FlagINT = 0,flag=0;
0004 ;
0004 ; /*
0004 ; 函数:interrupt_init()
0004 .dbline 17
0004 ; 功能:ZLG7290键盘中断服务初始化程序
0004 ; */
0004 A801 movw R20,R16
0006 0AC0 xjmp L5
0008 L2:
0008 .dbline 18
0008 6CE4 ldi R22,1100
000A 74E0 ldi R23,4
000C 02C0 xjmp L9
000E L6:
000E .dbline 18
000E L7:
000E .dbline 18
000E 6150 subi R22,1
0010 7040 sbci R23,0
0012 L9:
0012 .dbline 18
0012 6030 cpi R22,0
0014 6707 cpc R22,R23
0016 D9F7 brne L6
0018 X0:
0018 L3:
0018 .dbline 17
0018 4150 subi R20,1
001A 5040 sbci R21,0
001C L5:
001C .dbline 17
001C 4030 cpi R20,0
001E 4507 cpc R20,R21
0020 99F7 brne L2
0022 X1:
0022 .dbline -2
0022 .dbline 19
0022 ; void interrupt_init(void)
0022 ; {
0022 L1:
0022 0E940000 xcall pop_gset2
0026 .dbline 0 ; func end
0026 0895 ret
0028 .dbsym r x 20 i
0028 .dbsym r y 22 i
0028 .dbsym r z 16 i
0028 .dbend
0028 .dbfunc e TWI_init _TWI_init fV
.even
0028 _TWI_init::
0028 .dbline -1
0028 .dbline 28
0028 ; SEI(); //使能全局中断
0028 ; EIMSK=0x80; //使能外部中断7
0028 ; EICRB=0x80; //外部中断7采用下降沿触发
0028 ; DDRE&=~0x80; //配置中断管脚为输入
0028 ; PORTE|=BIT(PE7); //使能中断管脚的上拉
0028 ; }
0028 ; /*
0028 ; 函数:extint0()
0028 ; 功能:ZLG7290键盘中断服务程序
0028 .dbline 29
0028 ; 说明:中断触发方式选择负边沿触发,因此不必等待中断请求信号恢复为高电平
0028 82E2 ldi R24,34
002A 80937000 sts 112,R24
002E .dbline 30
002E ; */
002E 2224 clr R2
0030 20927100 sts 113,R2
0034 .dbline 31
0034 ; void extint0(void)
0034 84E4 ldi R24,68
0036 80937400 sts 116,R24
003A .dbline -2
003A .dbline 32
003A ; {
003A L10:
003A .dbline 0 ; func end
003A 0895 ret
003C .dbend
003C .dbfunc e TWI_start _TWI_start fc
.even
003C _TWI_start::
003C .dbline -1
003C .dbline 42
003C ; FlagINT = 1;
003C ; }
003C ; /*
003C ; /void miao()
003C ; {
003C ; flag=1;
003C ; }
003C ;
003C ;
003C ; 函数:delay1()
003C .dbline 43
003C ; 功能:延时10ms~655.36s
003C 84EA ldi R24,164
003E 80937400 sts 116,R24
0042 L12:
0042 .dbline 44
0042 L13:
0042 .dbline 44
0042 ; 参数:
0042 20907400 lds R2,116
0046 27FE sbrs R2,7
0048 FCCF rjmp L12
004A .dbline 45
004A ; t>0时,延时(t*0.01)s
004A 01E0 ldi R16,1
004C .dbline -2
004C L11:
004C .dbline 0 ; func end
004C 0895 ret
004E .dbend
004E .dbfunc e TWI_stop _TWI_stop fV
.even
004E _TWI_stop::
004E .dbline -1
004E .dbline 49
004E ; t=0时,延时655.36s
004E ; 说明:
004E ; 晶振采用8.31MHz
004E ; */
004E .dbline 50
004E ; void delay1(uint t)
004E 84E9 ldi R24,148
0050 80937400 sts 116,R24
0054 .dbline -2
0054 .dbline 51
0054 ; {
0054 L15:
0054 .dbline 0 ; func end
0054 0895 ret
0056 .dbend
0056 .dbfunc e TWI_writeB _TWI_writeB fc
0056 ; ack -> R20
0056 ; c -> R16
.even
0056 _TWI_writeB::
0056 0E940000 xcall push_gset1
005A .dbline -1
005A .dbline 63
005A ; uint x,y;
005A ; for(x=t;x>0;x--)
005A ; for(y=110;y>0;y--);
005A ; }
005A ;
005A ; /*
005A ; 函数:SystemInit()
005A ; 功能:系统初始化
005A ; */
005A ; void SystemInit()
005A ; {
005A ; TWI_init();
005A .dbline 64
005A ; interrupt_init();
005A 41E0 ldi R20,1
005C .dbline 65
005C ; delay1(30); //等待ZLG7290复位完毕
005C 00937300 sts 115,R16
0060 .dbline 66
0060 ; }
0060 84E8 ldi R24,132
0062 80937400 sts 116,R24
0066 L17:
0066 .dbline 67
0066 L18:
0066 .dbline 67
0066 ;
0066 20907400 lds R2,116
006A 27FE sbrs R2,7
006C FCCF rjmp L17
006E .dbline 68
006E ; /*
006E 80917100 lds R24,113
0072 887F andi R24,248
0074 8831 cpi R24,24
0076 09F0 breq L20
0078 .dbline 69
0078 ; 函数:ClearAll()
0078 4427 clr R20
007A L20:
007A .dbline 70
007A ; 功能:清除所有显示
007A 042F mov R16,R20
007C .dbline -2
007C L16:
007C 0E940000 xcall pop_gset1
0080 .dbline 0 ; func end
0080 0895 ret
0082 .dbsym r ack 20 c
0082 .dbsym r c 16 c
0082 .dbend
0082 .dbfunc e TWI_readB _TWI_readB fc
0082 ; ack -> R16
.even
0082 _TWI_readB::
0082 .dbline -1
0082 .dbline 81
0082 ; */
0082 ; void ClearAll()
0082 ; {
0082 ; uchar x;
0082 ; for ( x=0; x<8; x++ )
0082 ; {
0082 ; ZLG7290_Download(x,0,0,31);
0082 ; }
0082 ; }
0082 ;
0082 ; /*
0082 .dbline 82
0082 ; 函数:Test_DispBuf()
0082 0023 tst R16
0084 21F0 breq L23
0086 .dbline 83
0086 ; 功能:测试直接写显存
0086 84EC ldi R24,196
0088 80937400 sts 116,R24
008C 03C0 xjmp L26
008E L23:
008E .dbline 85
008E ; */
008E ; void Test_DispBuf()
008E 84E8 ldi R24,132
0090 80937400 sts 116,R24
0094 L25:
0094 .dbline 86
0094 L26:
0094 .dbline 86
0094 ; {
0094 20907400 lds R2,116
0098 27FE sbrs R2,7
009A FCCF rjmp L25
009C .dbline 87
009C ; uchar DispDat[16] =
009C 00917300 lds R16,115
00A0 .dbline -2
00A0 L22:
00A0 .dbline 0 ; func end
00A0 0895 ret
00A2 .dbsym r ack 16 c
00A2 .dbend
00A2 .dbfunc e TWI_page_write _TWI_page_write fc
00A2 ; i -> R20
00A2 ; arr -> R22,R23
00A2 ; n -> R10
00A2 ; addr -> R20
00A2 ; devadd -> R12
.even
00A2 _TWI_page_write::
00A2 0E940000 xcall push_gset4
00A6 422F mov R20,R18
00A8 C02E mov R12,R16
00AA A884 ldd R10,y+8
00AC 6A85 ldd R22,y+10
00AE 7B85 ldd R23,y+11
00B0 .dbline -1
00B0 .dbline 106
00B0 ; {//字母AbCdEFgHiJkLoPqr的字形数据
00B0 ; 0xEE,0x3E,0x9C,0x7A,0x9E,0x8E,0xF6,0x6E,
00B0 ; 0x20,0x70,0x0E,0x1C,0x3A,0xCE,0xE6,0x0A
00B0 ; };
00B0 ; uchar n;
00B0 ; uchar x;
00B0 ; uchar reg;
00B0 ; uchar dat;
00B0 ; for ( n=0; n<16; n++ )
00B0 ; {
00B0 ; for ( x=0; x<8; x++ )
00B0 ; {
00B0 ; reg = ZLG7290_DpRam + x;
00B0 ; dat = DispDat[n];
00B0 ; ZLG7290_WriteReg(reg,dat);
00B0 ; }
00B0 ; delay1(50);
00B0 ; }
00B0 ; }
00B0 .dbline 108
00B0 ;
00B0 ; /*
00B0 C5DF xcall _TWI_start
00B2 .dbline 109
00B2 ; 函数:Test_Download()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -