📄 test.lis
字号:
.module test.c
.area text(rom, con, rel)
0000 .dbfile D:\iccavr\mega16\11\10bit_adc\test.c
0000 .dbfile D:\iccavr\mega16\11\10bit_adc\delay.h
0000 .dbfunc e delay_us _delay_us fV
.even
0000 _delay_us::
0000 .dbline -1
0000 .dbline 6
0000 ; /**********延时函数*****************/
0000 ; /*-----------------------------------------------
0000 ; delay_us :1us延时函数
0000 ; ------------------------------------------------*/
0000 ; void delay_us(void)
0000 ; {
0000 .dbline 7
0000 ; asm("nop");
0000 0000 nop
0002 .dbline -2
0002 L1:
0002 .dbline 0 ; func end
0002 0895 ret
0004 .dbend
0004 .dbfunc e delay_nus _delay_nus fV
0004 ; t -> R20,R21
.even
0004 _delay_nus::
0004 4A93 st -y,R20
0006 5A93 st -y,R21
0008 A801 movw R20,R16
000A .dbline -1
000A .dbline 14
000A ; }
000A ; /*-----------------------------------------------
000A ; delay_nus :长延时函数
000A ; 输入参数: t :延时时间 us
000A ; ------------------------------------------------*/
000A ; void delay_nus(unsigned int t)
000A ; {
000A 01C0 xjmp L4
000C L3:
000C .dbline 16
000C ; while(t--)
000C ; delay_us();
000C F9DF xcall _delay_us
000E L4:
000E .dbline 15
000E 1A01 movw R2,R20
0010 4150 subi R20,1
0012 5040 sbci R21,0
0014 2220 tst R2
0016 D1F7 brne L3
0018 3320 tst R3
001A C1F7 brne L3
001C X0:
001C .dbline -2
001C L2:
001C .dbline 0 ; func end
001C 5991 ld R21,y+
001E 4991 ld R20,y+
0020 0895 ret
0022 .dbsym r t 20 i
0022 .dbend
0022 .dbfunc e delay_ms _delay_ms fV
0022 ; i -> R16,R17
.even
0022 _delay_ms::
0022 .dbline -1
0022 .dbline 22
0022 ; }
0022 ; /*----------------------------------------------
0022 ; delay_ms :1ms延时函数
0022 ; -----------------------------------------------*/
0022 ; void delay_ms(void)
0022 ; {
0022 .dbline 24
0022 ; unsigned int i;
0022 ; for(i=0;i<1140;i++);
0022 0027 clr R16
0024 1127 clr R17
0026 02C0 xjmp L10
0028 L7:
0028 .dbline 24
0028 L8:
0028 .dbline 24
0028 0F5F subi R16,255 ; offset = 1
002A 1F4F sbci R17,255
002C L10:
002C .dbline 24
002C 0437 cpi R16,116
002E E4E0 ldi R30,4
0030 1E07 cpc R17,R30
0032 D0F3 brlo L7
0034 X1:
0034 .dbline -2
0034 L6:
0034 .dbline 0 ; func end
0034 0895 ret
0036 .dbsym r i 16 i
0036 .dbend
0036 .dbfunc e delay_nms _delay_nms fV
0036 ; t -> R20,R21
.even
0036 _delay_nms::
0036 4A93 st -y,R20
0038 5A93 st -y,R21
003A A801 movw R20,R16
003C .dbline -1
003C .dbline 31
003C ; }
003C ; /*----------------------------------------------
003C ; delay_nms :长延时函数
003C ; 输入参数: t :延时时间 ms
003C ; -----------------------------------------------*/
003C ; void delay_nms(unsigned int t)
003C ; {
003C 01C0 xjmp L13
003E L12:
003E .dbline 33
003E ; while(t--)
003E ; delay_ms();
003E F1DF xcall _delay_ms
0040 L13:
0040 .dbline 32
0040 1A01 movw R2,R20
0042 4150 subi R20,1
0044 5040 sbci R21,0
0046 2220 tst R2
0048 D1F7 brne L12
004A 3320 tst R3
004C C1F7 brne L12
004E X2:
004E .dbline -2
004E L11:
004E .dbline 0 ; func end
004E 5991 ld R21,y+
0050 4991 ld R20,y+
0052 0895 ret
0054 .dbsym r t 20 i
0054 .dbend
0054 .dbfile D:\iccavr\mega16\11\10bit_adc\lcd12232.h
0054 .dbfunc e lcd_write _lcd_write fV
0054 ; j -> R22
0054 ; a -> R20
0054 ; i -> R10
0054 ; content -> R10
0054 ; dat_comm -> R12
.even
0054 _lcd_write::
0054 0E940000 xcall push_xgsetF03C
0058 A22E mov R10,R18
005A C02E mov R12,R16
005C .dbline -1
005C .dbline 18
005C ; //定义LCD口线
005C ; #define lcd_cs PA4
005C ; #define lcd_std PA3
005C ; #define lcd_sclk PA2
005C ; #define lcd_port PORTA
005C ; #define lcd_ddr DDRA
005C ;
005C ; //LCD显示坐标定义
005C ; #define x1 0x80 //lcd初始坐标1
005C ; #define x2 0x90 //lcd初始坐标2
005C ;
005C ; //LCD数据/命令格式定义
005C ; #define command 0 //lcd命令
005C ; #define data 1 //lcd数据
005C ;
005C ; //传送单个字节到LCD
005C ; void lcd_write(unsigned char dat_comm,unsigned char content)
005C ; {
005C .dbline 20
005C ; unsigned char a,i,j;
005C ; delay_ms();//延时时间要根据实际使用的芯片采用不同的延时时间
005C E2DF xcall _delay_ms
005E .dbline 21
005E ; a=content; //数据记录
005E 4A2D mov R20,R10
0060 .dbline 23
0060 ; //delay_ms();//这个延时要根据实际需要看是否需要增加//如8515就要加
0060 ; lcd_port|=BIT(lcd_cs);//cs=1
0060 DC9A sbi 0x1b,4
0062 .dbline 24
0062 ; lcd_port&=~BIT(lcd_sclk);//sclk=0;
0062 DA98 cbi 0x1b,2
0064 .dbline 25
0064 ; lcd_port|=(1<<lcd_std);//PORTC|=BIT(lcd_std);//std=1;
0064 DB9A sbi 0x1b,3
0066 .dbline 26
0066 ; for(i=0;i<5;i++) //启动命令
0066 AA24 clr R10
0068 03C0 xjmp L19
006A L16:
006A .dbline 27
006A ; {
006A .dbline 28
006A ; lcd_port|=BIT(lcd_sclk);//sclk=1;
006A DA9A sbi 0x1b,2
006C .dbline 29
006C ; lcd_port&=~BIT(lcd_sclk);//sclk=0;
006C DA98 cbi 0x1b,2
006E .dbline 30
006E ; }
006E L17:
006E .dbline 26
006E A394 inc R10
0070 L19:
0070 .dbline 26
0070 8A2D mov R24,R10
0072 8530 cpi R24,5
0074 D0F3 brlo L16
0076 X3:
0076 .dbline 31
0076 ; lcd_port&=~(1<<lcd_std);//PORTC&=~BIT(lcd_std);//std=0;
0076 DB98 cbi 0x1b,3
0078 .dbline 32
0078 ; lcd_port|=BIT(lcd_sclk);//sclk=1;
0078 DA9A sbi 0x1b,2
007A .dbline 33
007A ; lcd_port&=~BIT(lcd_sclk);//sclk=0;
007A DA98 cbi 0x1b,2
007C .dbline 34
007C ; if(dat_comm)
007C CC20 tst R12
007E 11F0 breq L20
0080 X4:
0080 .dbline 35
0080 ; lcd_port|=(1<<lcd_std);//PORTC|=BIT(lcd_std);//std=1; //数据
0080 DB9A sbi 0x1b,3
0082 01C0 xjmp L21
0084 L20:
0084 .dbline 37
0084 ; else
0084 ; lcd_port&=~(1<<lcd_std);//PORTC&=~BIT(lcd_std);//std=0; //命令
0084 DB98 cbi 0x1b,3
0086 L21:
0086 .dbline 38
0086 ; lcd_port|=BIT(lcd_sclk);//sclk=1;
0086 DA9A sbi 0x1b,2
0088 .dbline 39
0088 ; lcd_port&=~BIT(lcd_sclk);//sclk=0;
0088 DA98 cbi 0x1b,2
008A .dbline 40
008A ; lcd_port&=~(1<<lcd_std);//PORTC&=~BIT(lcd_std);//std=0;
008A DB98 cbi 0x1b,3
008C .dbline 41
008C ; lcd_port|=BIT(lcd_sclk);//sclk=1;
008C DA9A sbi 0x1b,2
008E .dbline 42
008E ; lcd_port&=~BIT(lcd_sclk);//sclk=0;
008E DA98 cbi 0x1b,2
0090 .dbline 43
0090 ; for(j=0;j<2;j++) //循环发送8个位数据
0090 6627 clr R22
0092 1AC0 xjmp L25
0094 L22:
0094 .dbline 44
0094 ; {
0094 .dbline 45
0094 ; for(i=0;i<4;i++)
0094 AA24 clr R10
0096 0BC0 xjmp L29
0098 L26:
0098 .dbline 46
0098 ; {
0098 .dbline 47
0098 ; if ((a&0x80)==0x80)
0098 842F mov R24,R20
009A 8078 andi R24,128
009C 8038 cpi R24,128
009E 11F4 brne L30
00A0 X5:
00A0 .dbline 48
00A0 ; lcd_port|=(1<<lcd_std);//PORTC|=BIT(lcd_std);//单字节传送
00A0 DB9A sbi 0x1b,3
00A2 01C0 xjmp L31
00A4 L30:
00A4 .dbline 50
00A4 ; else
00A4 ; lcd_port&=~(1<<lcd_std);//PORTC&=~BIT(lcd_std);
00A4 DB98 cbi 0x1b,3
00A6 L31:
00A6 .dbline 51
00A6 ; a=a<<1;
00A6 440F lsl R20
00A8 .dbline 52
00A8 ; lcd_port|=BIT(lcd_sclk);//sclk=1;
00A8 DA9A sbi 0x1b,2
00AA .dbline 53
00AA ; lcd_port&=~BIT(lcd_sclk);//sclk=0;
00AA DA98 cbi 0x1b,2
00AC .dbline 54
00AC ; }
00AC L27:
00AC .dbline 45
00AC A394 inc R10
00AE L29:
00AE .dbline 45
00AE 8A2D mov R24,R10
00B0 8430 cpi R24,4
00B2 90F3 brlo L26
00B4 X6:
00B4 .dbline 55
00B4 ; lcd_port&=~(1<<lcd_std);//PORTC&=~BIT(lcd_std);//std=0;
00B4 DB98 cbi 0x1b,3
00B6 .dbline 56
00B6 ; for(i=0;i<4;i++) //发送4个空数据
00B6 AA24 clr R10
00B8 03C0 xjmp L35
00BA L32:
00BA .dbline 57
00BA ; {
00BA .dbline 58
00BA ; lcd_port|=BIT(lcd_sclk);//sclk=1;
00BA DA9A sbi 0x1b,2
00BC .dbline 59
00BC ; lcd_port&=~BIT(lcd_sclk);//sclk=0;
00BC DA98 cbi 0x1b,2
00BE .dbline 60
00BE ; }
00BE L33:
00BE .dbline 56
00BE A394 inc R10
00C0 L35:
00C0 .dbline 56
00C0 8A2D mov R24,R10
00C2 8430 cpi R24,4
00C4 D0F3 brlo L32
00C6 X7:
00C6 .dbline 61
00C6 ; }
00C6 L23:
00C6 .dbline 43
00C6 6395 inc R22
00C8 L25:
00C8 .dbline 43
00C8 6230 cpi R22,2
00CA 20F3 brlo L22
00CC X8:
00CC .dbline 62
00CC ; lcd_port|=BIT(lcd_cs);
00CC DC9A sbi 0x1b,4
00CE .dbline -2
00CE L15:
00CE .dbline 0 ; func end
00CE 0C940000 xjmp pop_xgsetF03C
00D2 .dbsym r j 22 c
00D2 .dbsym r a 20 c
00D2 .dbsym r i 10 c
00D2 .dbsym r content 10 c
00D2 .dbsym r dat_comm 12 c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -