📄 main.lis
字号:
.module main.c
.area text(rom, con, rel)
0000 .dbfile D:\SOURCE~1\avr\avr48\smg12232zk/initrialm48.h
0000 .dbfunc e Port_Init _Port_Init fV
.even
0000 _Port_Init::
0000 .dbline -1
0000 .dbline 10
0000 ;
0000 ; /****************** SMG12232ZK串行接口程序******************
0000 ; *ICC-AVR application builder : 2007-10-18
0000 ; * Target : M8
0000 ; * Crystal: 8.0000Mhz
0000 ;
0000 ; * Title : Accessing to LCD-CONTROLLER
0000 ; * Date : 2007-10-18
0000 ; * Support QQ: 16693799
0000 ; * Create by : Joe Yuan
0000 .dbline 11
0000 ; * DESCRIPTION:This subroutine shows how to write data to LCD-CONTROLLER */
0000 8FEF ldi R24,255
0002 85B9 out 0x5,R24
0004 .dbline 12
0004 ;
0004 84B9 out 0x4,R24
0006 .dbline 13
0006 ;
0006 8FE6 ldi R24,111
0008 88B9 out 0x8,R24
000A .dbline 14
000A ;
000A 87B9 out 0x7,R24
000C .dbline 15
000C ; #include <iom48v.h> //ATMEGA48头文件
000C 8FEF ldi R24,255
000E 8BB9 out 0xb,R24
0010 .dbline 16
0010 ; #include <macros.h> //宏定义
0010 8AB9 out 0xa,R24
0012 .dbline -2
0012 L1:
0012 .dbline 0 ; func end
0012 0895 ret
0014 .dbend
0014 .dbfunc e Init_Devices _Init_Devices fV
.even
0014 _Init_Devices::
0014 .dbline -1
0014 .dbline 21
0014 ; #include "initrialm48.h"//初始化mcu
0014 ; #include "define.h" //端口定义
0014 ; #include "delay.h" //延时程序
0014 ;
0014 ;
0014 .dbline 23
0014 ; #define LCD_PORT PORTD
0014 ; #define LCD_DDR DDRD
0014 F894 cli
0016 .dbline 24
0016 ; #define LCD_SCLK PD0
0016 F4DF rcall _Port_Init
0018 .dbline 27
0018 ; #define LCD_CS PD2
0018 ; #define LCD_STD PD1
0018 ;
0018 7894 sei
001A .dbline -2
001A L2:
001A .dbline 0 ; func end
001A 0895 ret
001C .dbend
001C .dbfile D:\SOURCE~1\avr\avr48\smg12232zk/delay.h
001C .dbfunc e Delay_1us _Delay_1us fV
.even
001C _Delay_1us::
001C .dbline -1
001C .dbline 53
001C ;
001C ; #define LCD_CS_H LCD_PORT |= BIT(LCD_CS)
001C ; #define LCD_CS_L LCD_PORT &=~ BIT(LCD_CS)
001C ; #define LCD_STD_H LCD_PORT |= BIT(LCD_STD)
001C ; #define LCD_STD_L LCD_PORT &=~ BIT(LCD_STD)
001C ; #define LCD_SCLK_H LCD_PORT |= BIT(LCD_SCLK)
001C ; #define LCD_SCLK_L LCD_PORT &=~ BIT(LCD_SCLK)
001C ;
001C ;
001C ;
001C ; void Send_8bit(Word x);//串行发送8位数据
001C ; void Lcd_Write(Byte start,Byte data);//模块写入子程序
001C ; void Lcd_Reset(void);//模块复位子程序
001C ; void Hzk_Dis_Words(Byte ypos,Byte xpos,char *lcd_pointer);//xpos为列数,ypos为行数,num字符串长度
001C ; void Hzk_Dis_Data(Byte ypos,Byte xpos,Long data,Byte num);//xpos为列数,ypos为行数,num字符串长度
001C ;
001C ; Byte lcd_buf[10];//数据显示数组
001C ; Byte *pointer;
001C ; Long lcd_data1;
001C ; Long lcd_data2;
001C ;
001C ;
001C ; void main(void)
001C ; {
001C ; Word i;
001C ; Init_Devices();
001C .dbline 54
001C ; Lcd_Reset();
001C 0000 nop
001E .dbline -2
001E L3:
001E .dbline 0 ; func end
001E 0895 ret
0020 .dbend
0020 .dbfunc e Delay_Us _Delay_Us fV
0020 ; i -> R20
0020 ; xus -> R22
.even
0020 _Delay_Us::
0020 00D0 rcall push_gset2
0022 602F mov R22,R16
0024 .dbline -1
0024 .dbline 58
0024 ; Hzk_Dis_Words(1,1,"袁自刚:16693799");
0024 ; while(1)
0024 ; {
0024 ; Hzk_Dis_Data(2,1,lcd_data1,7);
0024 .dbline 60
0024 ; lcd_data1 ++;
0024 ;
0024 4427 clr R20
0026 02C0 rjmp L8
0028 L5:
0028 .dbline 61
0028 F9DF rcall _Delay_1us
002A L6:
002A .dbline 60
002A 4395 inc R20
002C L8:
002C .dbline 60
002C 4617 cp R20,R22
002E E0F3 brlo L5
0030 .dbline -2
0030 L4:
0030 00D0 rcall pop_gset2
0032 .dbline 0 ; func end
0032 0895 ret
0034 .dbsym r i 20 c
0034 .dbsym r xus 22 c
0034 .dbend
0034 .dbfunc e Delay_1ms _Delay_1ms fV
0034 ; i -> R16,R17
.even
0034 _Delay_1ms::
0034 .dbline -1
0034 .dbline 65
0034 ; Hzk_Dis_Data(2,5,lcd_data2,7);
0034 ; lcd_data2 ++;
0034 ; Delay_Ms(300);
0034 ; }
0034 ;
0034 .dbline 67
0034 ; }
0034 ; /****************发送汉字子程序******************
0034 0027 clr R16
0036 1127 clr R17
0038 02C0 rjmp L13
003A L10:
003A .dbline 68
003A L11:
003A .dbline 67
003A 0F5F subi R16,255 ; offset = 1
003C 1F4F sbci R17,255
003E L13:
003E .dbline 67
003E 0637 cpi R16,118
0040 E4E0 ldi R30,4
0042 1E07 cpc R17,R30
0044 D0F3 brlo L10
0046 .dbline -2
0046 L9:
0046 .dbline 0 ; func end
0046 0895 ret
0048 .dbsym r i 16 i
0048 .dbend
0048 .dbfunc e Delay_Ms _Delay_Ms fV
0048 ; i -> R20,R21
0048 ; j -> R22,R23
0048 ; xms -> R16,R17
.even
0048 _Delay_Ms::
0048 00D0 rcall push_gset2
004A .dbline -1
004A .dbline 72
004A ; ** xpos为列数,ypos为行数
004A ; **lcd_pointer为字符串首地址
004A ; *********************************************************/
004A ; void Hzk_Dis_Words(Byte ypos,Byte xpos,char *lcd_pointer)//xpos为列数,ypos为行数,num字符串长度
004A ; {
004A .dbline 74
004A ; Byte i=0,ram_address;//ram_address:首地址
004A ; //首先判断字符串得长度
004A 4427 clr R20
004C 5527 clr R21
004E 14C0 rjmp L18
0050 L15:
0050 .dbline 75
0050 ; while(*(lcd_pointer+i) != '\0')//字符串长度
0050 6627 clr R22
0052 7727 clr R23
0054 0BC0 rjmp L22
0056 L19:
0056 .dbline 76
0056 .dbline 77
0056 0000 nop
0058 .dbline 78
0058 0000 nop
005A .dbline 79
005A 0000 nop
005C .dbline 80
005C 0000 nop
005E .dbline 81
005E 0000 nop
0060 .dbline 82
0060 0000 nop
0062 .dbline 83
0062 0000 nop
0064 .dbline 84
0064 0000 nop
0066 .dbline 85
0066 0000 nop
0068 .dbline 86
0068 L20:
0068 .dbline 75
0068 6F5F subi R22,255 ; offset = 1
006A 7F4F sbci R23,255
006C L22:
006C .dbline 75
006C 623F cpi R22,242
006E E1E0 ldi R30,1
0070 7E07 cpc R23,R30
0072 88F3 brlo L19
0074 L16:
0074 .dbline 74
0074 4F5F subi R20,255 ; offset = 1
0076 5F4F sbci R21,255
0078 L18:
0078 .dbline 74
0078 4017 cp R20,R16
007A 5107 cpc R21,R17
007C 48F3 brlo L15
007E .dbline -2
007E L14:
007E 00D0 rcall pop_gset2
0080 .dbline 0 ; func end
0080 0895 ret
0082 .dbsym r i 20 i
0082 .dbsym r j 22 i
0082 .dbsym r xms 16 i
0082 .dbend
0082 .dbfunc e Delay_X10us _Delay_X10us fV
0082 ; i -> R20,R21
0082 ; j -> R22
0082 ; x10us -> R16,R17
.even
0082 _Delay_X10us::
0082 00D0 rcall push_gset2
0084 .dbline -1
0084 .dbline 90
0084 ; {
0084 ; i++;
0084 ; }//i=字符串长度
0084 ; if(i>15)
0084 ; {
0084 ; i=15;
0084 ; }
0084 ; if(ypos==1)
0084 ; {
0084 ; ram_address = 0x80+xpos-1;
0084 ; }
0084 ; else if(ypos==2)
0084 ; {
0084 ; ram_address = 0x90+xpos-1;
0084 ; }
0084 .dbline 92
0084 ; Lcd_Write(0xf8,ram_address);
0084 ; for(;i>0;i--)
0084 4427 clr R20
0086 5527 clr R21
0088 0AC0 rjmp L27
008A L24:
008A .dbline 93
008A ; {
008A .dbline 94
008A ; Lcd_Write(0xfa,*lcd_pointer);
008A 6627 clr R22
008C 04C0 rjmp L31
008E L28:
008E .dbline 95
008E .dbline 96
008E 0000 nop
0090 .dbline 97
0090 0000 nop
0092 .dbline 98
0092 0000 nop
0094 .dbline 99
0094 L29:
0094 .dbline 94
0094 6395 inc R22
0096 L31:
0096 .dbline 94
0096 6230 cpi R22,2
0098 D0F3 brlo L28
009A .dbline 100
009A L25:
009A .dbline 92
009A 4F5F subi R20,255 ; offset = 1
009C 5F4F sbci R21,255
009E L27:
009E .dbline 92
009E 4017 cp R20,R16
00A0 5107 cpc R21,R17
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -