📄 main.lis
字号:
.module main.c
.area lit(rom, con, rel)
0000 _AC_TABLE::
0000 8081 .byte 128,129
0002 8283 .byte 130,131
0004 8485 .byte 132,133
0006 8687 .byte 134,135
0008 9091 .byte 144,145
000A 9293 .byte 146,147
000C 9495 .byte 148,149
000E 9697 .byte 150,151
0010 8889 .byte 136,137
0012 8A8B .byte 138,139
0014 8C8D .byte 140,141
0016 8E8F .byte 142,143
0018 9899 .byte 152,153
001A 9A9B .byte 154,155
001C 9C9D .byte 156,157
001E 9E9F .byte 158,159
0020 .dbfile E:\单片机\本人实验\重新实验\adc_vcc/lcd.h
0020 .dbsym e AC_TABLE _AC_TABLE A[32:32]kc
.area data(ram, con, rel)
0000 .dbfile E:\单片机\本人实验\重新实验\adc_vcc/lcd.h
0000 _str20::
0000 .blkb 17
.area idata
0000 BBB6D3ADB9E2C1D9736F6E73616E2121 .byte 187,182,211,173,185,226,193,217,'s,'o,'n,'s,'a,'n,33,33
0010 00 .byte 0
.area data(ram, con, rel)
0011 .dbfile E:\单片机\本人实验\重新实验\adc_vcc/lcd.h
0011 .dbsym e str20 _str20 A[17:17]c
0011 _str10::
0011 .blkb 65
.area idata
0011 BBC6BAD3D4B6C9CFB0D7D4C6BCE4A3AC .byte 187,198,186,211,212,182,201,207,176,215,212,198,188,228,163,172
0021 D2BBC6ACB9C2B3C7CDF2D8F0C9BDA1A3 .byte 210,187,198,172,185,194,179,199,205,242,216,240,201,189,161,163
0031 C7BCB5D1BACED0EBD4B9D1EEC1F8A3AC .byte 199,188,181,209,186,206,208,235,212,185,209,238,193,248,163,172
0041 B4BAB7E7B2BBB6C8D3F1C3C5B9D8A1A3 .byte 180,186,183,231,178,187,182,200,211,241,195,197,185,216,161,163
0051 00 .byte 0
.area data(ram, con, rel)
0052 .dbfile E:\单片机\本人实验\重新实验\adc_vcc/lcd.h
0052 .dbsym e str10 _str10 A[65:65]c
.area text(rom, con, rel)
0000 .dbfile E:\单片机\本人实验\重新实验\adc_vcc/lcd.h
0000 .dbfunc e DelayKey _DelayKey fV
0000 ; i -> R20,R21
0000 ; ms -> R16,R17
.even
0000 _DelayKey::
0000 0E940000 xcall push_gset1
0004 .dbline -1
0004 .dbline 41
0004 ; #include "iom16v.h"
0004 ; #include "macros.h"
0004 ; #include "lcd.h"
0004 ; //#include <stdio.h>
0004 ; // #include <stdlib.h> //sprintf函数用
0004 ; //#include <string.h> //字符连接函数用
0004 ; #define uchar unsigned char
0004 ; #define uint unsigned int
0004 ; uchar str[]="电压为 毫伏";
0004 ; uchar str2[4] ;
0004 ; float adc_data; //不能为uint型,否则只显示个位
0004 ; uint vcc;
0004 ;
0004 ;
0004 ; void delay_ms(uchar i)
0004 ; {
0004 ; uchar a,b;
0004 ; for(a=1;a<i;a++)
0004 ; for(b=1;b<141;b++)
0004 ; {;}
0004 ; }
0004 ;
0004 ;
0004 ; /*****************字符连接函数********************/
0004 ; /*void strcatenate(char t[], char s[] )
0004 ; {
0004 ; strcat(t,s);
0004 ; } */
0004 ;
0004 ; /****************电压i伏特转换为对应字符*************************/
0004 ; void change(uint i,uchar *p) //显示处理
0004 ; { p[3]=i%10+48;//个
0004 ; p[2]=i/10%10+48;//十
0004 ; p[1]=i/100%10+48;//百
0004 ; p[0]=i/1000%10+48;//千
0004 ; }
0004 ;
0004 ; #pragma interrupt_handler adc_end: 15
0004 ; void adc_end(void)
0004 ; {
0004 ; adc_data=(float)(ADCH*4+ADCL/64);
0004 09C0 xjmp L3
0006 L2:
0006 .dbline 44
0006 ;
0006 ;
0006 ; if (adc_data>3*1024/5) //大于3V PB0亮
0006 .dbline 45
0006 ; PORTB=~0B001;
0006 41E0 ldi R20,1
0008 50E0 ldi R21,0
000A 02C0 xjmp L8
000C L5:
000C .dbline 46
000C L6:
000C .dbline 45
000C 4F5F subi R20,255 ; offset = 1
000E 5F4F sbci R21,255
0010 L8:
0010 .dbline 45
0010 4D38 cpi R20,141
0012 E0E0 ldi R30,0
0014 5E07 cpc R21,R30
0016 D0F3 brlo L5
0018 .dbline 47
0018 L3:
0018 .dbline 43
0018 1801 movw R2,R16
001A 0150 subi R16,1
001C 1040 sbci R17,0
001E 2220 tst R2
0020 91F7 brne L2
0022 3320 tst R3
0024 81F7 brne L2
0026 X0:
0026 .dbline -2
0026 L1:
0026 0E940000 xcall pop_gset1
002A .dbline 0 ; func end
002A 0895 ret
002C .dbsym r i 20 i
002C .dbsym r ms 16 i
002C .dbend
002C .dbfunc e LCD_WriteByte _LCD_WriteByte fV
002C ; i -> R20
002C ; Dbyte -> R16
.even
002C _LCD_WriteByte::
002C 0E940000 xcall push_gset1
0030 .dbline -1
0030 .dbline 52
0030 ; else if (adc_data<0.5*1024/5) //小于0.5V PB1亮
0030 ; PORTB=~0B010;
0030 ; else
0030 ; PORTB=~0B100; //0.5~3V PB2亮
0030 ; ADCSRA |= 0X40;
0030 ; }
0030 ;
0030 .dbline 54
0030 ;
0030 ;
0030 8E9A sbi 0x11,6
0032 .dbline 55
0032 ; void main(void)
0032 8C9A sbi 0x11,4
0034 .dbline 57
0034 ; {
0034 ; uchar i=0;
0034 4427 clr R20
0036 0DC0 xjmp L13
0038 L10:
0038 .dbline 58
0038 ; DDRA=0X00;
0038 .dbline 59
0038 ; PORTA=0XFF;
0038 9698 cbi 0x12,6
003A .dbline 61
003A ; DDRB=0XFF;
003A ; PORTB=0XFF;
003A 000F lsl R16
003C .dbline 62
003C ; DDRC=0X00;
003C 2FB6 in R2,0x3f
003E 20FE sbrs R2,0
0040 02C0 rjmp L14
0042 .dbline 63
0042 ; PORTC=0X00;
0042 949A sbi 0x12,4
0044 01C0 xjmp L15
0046 L14:
0046 .dbline 65
0046 ; /**************配置LCD12864*********************/
0046 ; DDRC |=BIT(6); //设置输出
0046 9498 cbi 0x12,4
0048 L15:
0048 .dbline 67
0048 969A sbi 0x12,6
004A .dbline 68
004A 0000 nop
004C .dbline 68
004C 0000 nop
004E .dbline 69
004E 9698 cbi 0x12,6
0050 .dbline 70
0050 L11:
0050 .dbline 57
0050 4395 inc R20
0052 L13:
0052 .dbline 57
0052 4830 cpi R20,8
0054 88F3 brlo L10
0056 .dbline 71
0056 ; PORTC &= ~BIT(6); //L:serial mode 串行
0056 ; DDRC &= ~BIT(7); //设置输入
0056 ; PORTC &= ~BIT(7); //LCD的NC脚悬空
0056 ; DDRD &= ~BIT(7); //设置输入
0056 ; PORTD &= ~BIT(7); //RST复位低电平有效
0056 ; /*****************************************/
0056 .dbline -2
0056 L9:
0056 0E940000 xcall pop_gset1
005A .dbline 0 ; func end
005A 0895 ret
005C .dbsym r i 20 c
005C .dbsym r Dbyte 16 c
005C .dbend
005C .dbfunc e LCD_ReadByte _LCD_ReadByte fc
005C ; temp2 -> R16
005C ; temp1 -> R18
005C ; i -> R20
.even
005C _LCD_ReadByte::
005C 0E940000 xcall push_gset1
0060 .dbline -1
0060 .dbline 78
0060 ; DDRD=0X00;
0060 ; PORTD=0XFF;
0060 ; LCD_Init();
0060 ; ADMUX=0X61; //PA1为AD电压采样通道
0060 ; ADCSRA=0XCB;
0060 ; SEI();
0060 ; while(1)
0060 .dbline 80
0060 ; {
0060 ; //strcatenate(str20,str2);
0060 0027 clr R16
0062 2227 clr R18
0064 .dbline 81
0064 ; //sprintf(str2,"%f",vcc); // 转换float 到 char
0064 8E9A sbi 0x11,6
0066 .dbline 82
0066 ; vcc=(uint)(adc_data*5000/1024);
0066 8C98 cbi 0x11,4
0068 .dbline 82
0068 949A sbi 0x12,4
006A .dbline 84
006A ; change( vcc ,str2) ; //显示处理
006A ; delay_ms(20);
006A 4427 clr R20
006C 0FC0 xjmp L20
006E L17:
006E .dbline 85
006E ; // LCD_ClearTXT( );
006E .dbline 86
006E ; LCD_PutStr(0,0,str);
006E 220F lsl R18
0070 .dbline 88
0070 ; LCD_PutStr(0,3,str2);
0070 ; delay_ms(2);
0070 9698 cbi 0x12,6
0072 .dbline 89
0072 ; // for(;;)
0072 0000 nop
0074 .dbline 89
0074 0000 nop
0076 .dbline 90
0076 ; // {
0076 969A sbi 0x12,6
0078 .dbline 91
0078 ; // continue;
0078 0000 nop
007A .dbline 91
007A 0000 nop
007C .dbline 92
007C ; // }
007C 9698 cbi 0x12,6
007E .dbline 94
007E ; }
007E ; }
007E 80B3 in R24,0x10
0080 8071 andi R24,16
0082 8295 swap R24
0084 8F70 andi R24,#0x0F
0086 09F0 breq L21
0088 .dbline 94
0088 2395 inc R18
008A L21:
008A .dbline 95
008A L18:
008A .dbline 84
008A 4395 inc R20
008C L20:
008C .dbline 84
008C 4830 cpi R20,8
008E 78F3 brlo L17
0090 .dbline 96
0090 ; }
0090 ; }
0090 4427 clr R20
0092 0FC0 xjmp L26
0094 L23:
0094 .dbline 97
0094 ; }
0094 .dbline 98
0094 ; }
0094 000F lsl R16
0096 .dbline 100
0096 ; }
0096 ; }
0096 9698 cbi 0x12,6
0098 .dbline 101
0098 ; }
0098 0000 nop
009A .dbline 101
009A 0000 nop
009C .dbline 102
009C ; }
009C 969A sbi 0x12,6
009E .dbline 103
009E ; }
009E 0000 nop
00A0 .dbline 103
00A0 0000 nop
00A2 .dbline 104
00A2 ; }
00A2 9698 cbi 0x12,6
00A4 .dbline 106
00A4 ; }
00A4 ; }
00A4 80B3 in R24,0x10
00A6 8071 andi R24,16
00A8 8295 swap R24
00AA 8F70 andi R24,#0x0F
00AC 09F0 breq L27
00AE .dbline 106
00AE 0395 inc R16
00B0 L27:
00B0 .dbline 107
00B0 L24:
00B0 .dbline 96
00B0 4395 inc R20
00B2 L26:
00B2 .dbline 96
00B2 4830 cpi R20,8
00B4 78F3 brlo L23
00B6 .dbline 108
00B6 ; }
00B6 ; }
00B6 802F mov R24,R16
00B8 8F70 andi R24,15
00BA 022F mov R16,R18
00BC 007F andi R16,240
00BE 080F add R16,R24
00C0 .dbline -2
00C0 L16:
00C0 0E940000 xcall pop_gset1
00C4 .dbline 0 ; func end
00C4 0895 ret
00C6 .dbsym r temp2 16 c
00C6 .dbsym r temp1 18 c
00C6 .dbsym r i 20 c
00C6 .dbend
00C6 .dbfunc e LCD_CheckBusy _LCD_CheckBusy fV
.even
00C6 _LCD_CheckBusy::
00C6 .dbline -1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -