📄 main.lis
字号:
.module main.c
.area text(rom, con, rel)
0000 .dbfile F:\avr单片机学习\我自编程序\1602lcd\main.c
.area data(ram, con, rel)
0000 .dbfile F:\avr单片机学习\我自编程序\1602lcd\main.c
0000 _str00::
0000 .blkb 17
.area idata
0000 2020617574686F723A616E6369656E74 .byte 32,32,'a,'u,'t,'h,'o,'r,58,'a,'n,'c,'i,'e,'n,'t
0010 00 .byte 0
.area data(ram, con, rel)
0011 .dbfile F:\avr单片机学习\我自编程序\1602lcd\main.c
0011 .dbsym e str00 _str00 A[17:17]c
0011 _str01::
0011 .blkb 17
.area idata
0011 2074696D653A323030382F30382F3039 .byte 32,'t,'i,'m,'e,58,50,48,48,56,47,48,56,47,48,57
0021 00 .byte 0
.area data(ram, con, rel)
0022 .dbfile F:\avr单片机学习\我自编程序\1602lcd\main.c
0022 .dbsym e str01 _str01 A[17:17]c
0022 _str1::
0022 .blkb 17
.area idata
0022 206672657175656E6379206D65746572 .byte 32,'f,'r,'e,'q,'u,'e,'n,'c,'y,32,'m,'e,'t,'e,'r
0032 00 .byte 0
.area data(ram, con, rel)
0033 .dbfile F:\avr单片机学习\我自编程序\1602lcd\main.c
0033 .dbsym e str1 _str1 A[17:17]c
0033 _str2::
0033 .blkb 17
.area idata
0033 20202020463A303030485A2020202020 .byte 32,32,32,32,'F,58,48,48,48,'H,'Z,32,32,32,32,32
0043 00 .byte 0
.area data(ram, con, rel)
0044 .dbfile F:\avr单片机学习\我自编程序\1602lcd\main.c
0044 .dbsym e str2 _str2 A[17:17]c
.area text(rom, con, rel)
0000 .dbfile F:\avr单片机学习\我自编程序\1602lcd\main.c
0000 .dbfunc e main _main fV
.even
0000 _main::
0000 .dbline -1
0000 .dbline 36
0000 ; /*---------------------------------------------------------------
0000 ; 工程名称:1602液晶演示频率计
0000 ; 编译器类型及版本:ICCAVR 6.9
0000 ; 设计者:余威明
0000 ; 设计日期:2007.08.09
0000 ;
0000 ; 芯片类型:ATmega16L
0000 ; 时钟频率:4M外部时钟
0000 ; 硬件接口说明:MCU ~ LCD
0000 ; PORTD ~ dataport对应1602的d0~d7
0000 ; PA1 ~ RS
0000 ; PA2 ~ RW
0000 ; PA3 ~ E
0000 ; ---------------------------------------------------------------*/
0000 ; #include <iom16v.h>
0000 ; #include <macros.h>
0000 ; #include "lcd1602.h"
0000 ;
0000 ;
0000 ; void hextoasc(void); //十六进制转ASCII码
0000 ; void timer1_init(void); //定时器1初始化
0000 ; void port_init(void); //端口初始化
0000 ; void init_devices(void);
0000 ;
0000 ; //显示的两行字符
0000 ; unsigned char str00[]=" author:ancient"; //液晶屏初始显示内容
0000 ; unsigned char str01[]=" time:2008/08/09";
0000 ; unsigned char str1[]=" frequency meter";
0000 ; unsigned char str2[]=" F:000HZ "; //频率显示形式
0000 ; unsigned int count; //外部脉冲计数值
0000 ; unsigned char tim0_ovf_count; //t0溢出次数
0000 ; //在LCD上显示两行字符
0000 ;
0000 ;
0000 ; void main(void)
0000 ; {
0000 .dbline 37
0000 ; init_devices(); //初始化
0000 8BD0 xcall _init_devices
0002 .dbline 38
0002 ; display_a_string(0,str00); //开机界面
0002 20E0 ldi R18,<_str00
0004 30E0 ldi R19,>_str00
0006 0027 clr R16
0008 0E940000 xcall _display_a_string
000C .dbline 39
000C ; delay_nms(500);
000C 04EF ldi R16,500
000E 11E0 ldi R17,1
0010 0E940000 xcall _delay_nms
0014 .dbline 40
0014 ; display_a_string(1,str01);
0014 20E0 ldi R18,<_str01
0016 30E0 ldi R19,>_str01
0018 01E0 ldi R16,1
001A 0E940000 xcall _display_a_string
001E .dbline 41
001E ; delay_nms(1000);
001E 08EE ldi R16,1000
0020 13E0 ldi R17,3
0022 0E940000 xcall _delay_nms
0026 .dbline 42
0026 ; lcd_write_command(0x01,1);//显示清屏
0026 21E0 ldi R18,1
0028 01E0 ldi R16,1
002A 0E940000 xcall _lcd_write_command
002E .dbline 43
002E ; delay_nms(200);
002E 08EC ldi R16,200
0030 10E0 ldi R17,0
0032 0E940000 xcall _delay_nms
0036 .dbline 44
0036 ; display_a_string(0,str1); //显示“frequncy meter”
0036 20E0 ldi R18,<_str1
0038 30E0 ldi R19,>_str1
003A 0027 clr R16
003C 0E940000 xcall _display_a_string
0040 .dbline 45
0040 ; delay_nms(200);
0040 08EC ldi R16,200
0042 10E0 ldi R17,0
0044 0E940000 xcall _delay_nms
0048 0AC0 xjmp L3
004A L2:
004A .dbline 47
004A ; while(1)
004A ; {
004A .dbline 48
004A ; hextoasc(); //十六进制转ASCII码
004A 0BD0 xcall _hextoasc
004C .dbline 49
004C ; display_a_string(1,str2);
004C 20E0 ldi R18,<_str2
004E 30E0 ldi R19,>_str2
0050 01E0 ldi R16,1
0052 0E940000 xcall _display_a_string
0056 .dbline 50
0056 ; delay_nms(200);
0056 08EC ldi R16,200
0058 10E0 ldi R17,0
005A 0E940000 xcall _delay_nms
005E .dbline 51
005E ; }
005E L3:
005E .dbline 46
005E F5CF xjmp L2
0060 X0:
0060 .dbline -2
0060 L1:
0060 .dbline 0 ; func end
0060 0895 ret
0062 .dbend
0062 .dbfunc e hextoasc _hextoasc fV
.even
0062 _hextoasc::
0062 .dbline -1
0062 .dbline 55
0062 ; }
0062 ; //十六进制转ASCII码,为LCD显示作准备
0062 ; void hextoasc(void)
0062 ; {
0062 .dbline 56
0062 ; if(count>=1000) //检测数值大于1000HZ,溢出
0062 80910100 lds R24,_count
0066 90910200 lds R25,_count+1
006A 883E cpi R24,232
006C E3E0 ldi R30,3
006E 9E07 cpc R25,R30
0070 58F0 brlo L6
0072 X1:
0072 .dbline 57
0072 ; {
0072 .dbline 58
0072 ; str2[6] ='O'; //显示"OVF"
0072 8FE4 ldi R24,79
0074 80933900 sts _str2+6,R24
0078 .dbline 59
0078 ; str2[7] ='V';
0078 86E5 ldi R24,86
007A 80933A00 sts _str2+7,R24
007E .dbline 60
007E ; str2[8] ='F';
007E 86E4 ldi R24,70
0080 80933B00 sts _str2+8,R24
0084 .dbline 62
0084 ;
0084 ; PORTC|=(1<<PC0);//PC0置1,发光管亮
0084 A89A sbi 0x15,0
0086 .dbline 64
0086 ;
0086 ; }
0086 29C0 xjmp L7
0088 L6:
0088 .dbline 66
0088 ; else
0088 ; {
0088 .dbline 67
0088 ; str2[6]=count/100+0x30;
0088 24E6 ldi R18,100
008A 30E0 ldi R19,0
008C 00910100 lds R16,_count
0090 10910200 lds R17,_count+1
0094 0E940000 xcall div16u
0098 C801 movw R24,R16
009A C096 adiw R24,48
009C 80933900 sts _str2+6,R24
00A0 .dbline 68
00A0 ; str2[7]=count%100/10+0x30;
00A0 24E6 ldi R18,100
00A2 30E0 ldi R19,0
00A4 00910100 lds R16,_count
00A8 10910200 lds R17,_count+1
00AC 0E940000 xcall mod16u
00B0 2AE0 ldi R18,10
00B2 30E0 ldi R19,0
00B4 0E940000 xcall div16u
00B8 C801 movw R24,R16
00BA C096 adiw R24,48
00BC 80933A00 sts _str2+7,R24
00C0 .dbline 69
00C0 ; str2[8]=count%10+0x30;
00C0 2AE0 ldi R18,10
00C2 30E0 ldi R19,0
00C4 00910100 lds R16,_count
00C8 10910200 lds R17,_count+1
00CC 0E940000 xcall mod16u
00D0 C801 movw R24,R16
00D2 C096 adiw R24,48
00D4 80933B00 sts _str2+8,R24
00D8 .dbline 70
00D8 ; PORTC&=~(1<<PC0); //PC0清0,发光管灭
00D8 A898 cbi 0x15,0
00DA .dbline 71
00DA ; }
00DA L7:
00DA .dbline -2
00DA L5:
00DA .dbline 0 ; func end
00DA 0895 ret
00DC .dbend
00DC .dbfunc e port_init _port_init fV
.even
00DC _port_init::
00DC .dbline -1
00DC .dbline 75
00DC ; }
00DC ;
00DC ; void port_init(void)
00DC ; {
00DC .dbline 76
00DC ; PORTA = 0x00;
00DC 2224 clr R2
00DE 2BBA out 0x1b,R2
00E0 .dbline 77
00E0 ; DDRA = 0xFF;
00E0 8FEF ldi R24,255
00E2 8ABB out 0x1a,R24
00E4 .dbline 78
00E4 ; PORTB = 0x01;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -