📄 child.lis
字号:
.module child.c
.area text(rom, con, rel)
0000 .dbfile F:\赵一\edu6000_1125\child.c
0000 .dbfunc e delay_us _delay_us fV
0000 ; us -> R16
.even
0000 _delay_us::
0000 .dbline -1
0000 .dbline 6
0000 ; #include <iom8v.h>
0000 ; #include <macros.h>
0000 ; #include "head.h"
0000 ;
0000 ; void delay_us(unsigned char us) //when the xtal is 8M, the delay time is 1 us.
0000 ; {
0000 L2:
0000 .dbline 8
0000 ; do
0000 ; {
0000 .dbline 9
0000 ; us--;
0000 0A95 dec R16
0002 .dbline 10
0002 ; asm("nop");
0002 0000 nop
0004 .dbline 11
0004 ; asm("nop");
0004 0000 nop
0006 .dbline 12
0006 ; asm("nop");
0006 0000 nop
0008 .dbline 13
0008 ; asm("nop");
0008 0000 nop
000A .dbline 14
000A L3:
000A .dbline 14
000A ; }while(us);
000A 0023 tst R16
000C C9F7 brne L2
000E .dbline -2
000E .dbline 15
000E ; }
000E L1:
000E .dbline 0 ; func end
000E 0895 ret
0010 .dbsym r us 16 c
0010 .dbend
0010 .dbfunc e delay_ms _delay_ms fV
0010 ; i -> R22,R23
0010 ; ms -> R20
.even
0010 _delay_ms::
0010 0E940000 xcall push_gset2
0014 402F mov R20,R16
0016 .dbline -1
0016 .dbline 18
0016 ;
0016 ; void delay_ms(unsigned char ms)
0016 ; {
0016 L6:
0016 .dbline 21
0016 ; unsigned int i;
0016 ; do
0016 ; {
0016 .dbline 22
0016 ; ms--;
0016 4A95 dec R20
0018 .dbline 23
0018 ; for(i=0;i<5;i++)
0018 6627 clr R22
001A 7727 clr R23
001C 04C0 xjmp L12
001E L9:
001E .dbline 24
001E 08EC ldi R16,200
0020 EFDF xcall _delay_us
0022 L10:
0022 .dbline 23
0022 6F5F subi R22,255 ; offset = 1
0024 7F4F sbci R23,255
0026 L12:
0026 .dbline 23
0026 6530 cpi R22,5
0028 E0E0 ldi R30,0
002A 7E07 cpc R23,R30
002C C0F3 brlo L9
002E .dbline 25
002E L7:
002E .dbline 25
002E ; delay_us(200);
002E ; }while(ms);
002E 4423 tst R20
0030 91F7 brne L6
0032 .dbline -2
0032 .dbline 26
0032 ; }
0032 L5:
0032 0E940000 xcall pop_gset2
0036 .dbline 0 ; func end
0036 0895 ret
0038 .dbsym r i 22 i
0038 .dbsym r ms 20 c
0038 .dbend
0038 .dbfunc e send_cmd _send_cmd fV
0038 ; i -> R20
0038 ; mod -> R22
0038 ; cmd -> R10
.even
0038 _send_cmd::
0038 0E940000 xcall push_gset3
003C A02E mov R10,R16
003E .dbline -1
003E .dbline 29
003E ;
003E ; void send_cmd(unsigned char cmd) //send comend to the lcd.
003E ; {
003E .dbline 31
003E ; unsigned char i,mod;
003E ; clr_cs;
003E 9798 cbi 0x12,7
0040 .dbline 32
0040 ; mod=0x80;
0040 60E8 ldi R22,128
0042 .dbline 33
0042 ; for(i=0;i<3;i++)
0042 4427 clr R20
0044 0FC0 xjmp L17
0046 L14:
0046 .dbline 34
0046 ; {
0046 .dbline 35
0046 ; if((mod&0x80)==0x80)
0046 862F mov R24,R22
0048 8078 andi R24,128
004A 8038 cpi R24,128
004C 11F4 brne L18
004E .dbline 36
004E ; set_data;
004E C39A sbi 0x18,3
0050 01C0 xjmp L19
0052 L18:
0052 .dbline 38
0052 ; else
0052 ; clr_data;
0052 C398 cbi 0x18,3
0054 L19:
0054 .dbline 40
0054 C498 cbi 0x18,4
0056 .dbline 41
0056 08E0 ldi R16,8
0058 D3DF xcall _delay_us
005A .dbline 42
005A C49A sbi 0x18,4
005C .dbline 43
005C 660F lsl R22
005E .dbline 44
005E 08E0 ldi R16,8
0060 CFDF xcall _delay_us
0062 .dbline 45
0062 L15:
0062 .dbline 33
0062 4395 inc R20
0064 L17:
0064 .dbline 33
0064 4330 cpi R20,3
0066 78F3 brlo L14
0068 .dbline 46
0068 ;
0068 ; clr_wr;
0068 ; delay_us(8);
0068 ; set_wr;
0068 ; mod=mod<<1;
0068 ; delay_us(8);
0068 ; }
0068 ; mod=cmd;
0068 6A2D mov R22,R10
006A .dbline 47
006A ; for(i=0;i<9;i++)
006A 4427 clr R20
006C 0FC0 xjmp L23
006E L20:
006E .dbline 48
006E ; {
006E .dbline 49
006E ; if((mod&0x80)==0x80)
006E 862F mov R24,R22
0070 8078 andi R24,128
0072 8038 cpi R24,128
0074 11F4 brne L24
0076 .dbline 50
0076 ; set_data;
0076 C39A sbi 0x18,3
0078 01C0 xjmp L25
007A L24:
007A .dbline 52
007A ; else
007A ; clr_data;
007A C398 cbi 0x18,3
007C L25:
007C .dbline 53
007C C498 cbi 0x18,4
007E .dbline 54
007E 08E0 ldi R16,8
0080 BFDF xcall _delay_us
0082 .dbline 55
0082 C49A sbi 0x18,4
0084 .dbline 56
0084 660F lsl R22
0086 .dbline 57
0086 08E0 ldi R16,8
0088 BBDF xcall _delay_us
008A .dbline 58
008A L21:
008A .dbline 47
008A 4395 inc R20
008C L23:
008C .dbline 47
008C 4930 cpi R20,9
008E 78F3 brlo L20
0090 .dbline 59
0090 ; clr_wr;
0090 ; delay_us(8);
0090 ; set_wr;
0090 ; mod=mod<<1;
0090 ; delay_us(8);
0090 ; }
0090 ; set_cs;
0090 979A sbi 0x12,7
0092 .dbline -2
0092 .dbline 60
0092 ; }
0092 L13:
0092 0E940000 xcall pop_gset3
0096 .dbline 0 ; func end
0096 0895 ret
0098 .dbsym r i 20 c
0098 .dbsym r mod 22 c
0098 .dbsym r cmd 10 c
0098 .dbend
0098 .dbfunc e send_data _send_data fV
0098 ; i -> R20
0098 ; mod -> R22
0098 ; data -> R10
0098 ; addr -> R12
.even
0098 _send_data::
0098 0E940000 xcall push_gset4
009C A22E mov R10,R18
009E C02E mov R12,R16
00A0 .dbline -1
00A0 .dbline 65
00A0 ;
00A0 ; //send data and address to the lcd.
00A0 ;
00A0 ; void send_data(unsigned char addr,unsigned char data)
00A0 ; {
00A0 .dbline 68
00A0 ; unsigned char i,mod;
00A0 ;
00A0 ; clr_cs;
00A0 9798 cbi 0x12,7
00A2 .dbline 69
00A2 ; mod=0x05; //entern the write mode.
00A2 65E0 ldi R22,5
00A4 .dbline 70
00A4 ; for(i=0;i<3;i++)
00A4 4427 clr R20
00A6 0FC0 xjmp L30
00A8 L27:
00A8 .dbline 71
00A8 ; {
00A8 .dbline 72
00A8 ; if((mod&0x01)==0x01)
00A8 862F mov R24,R22
00AA 8170 andi R24,1
00AC 8130 cpi R24,1
00AE 11F4 brne L31
00B0 .dbline 73
00B0 ; set_data;
00B0 C39A sbi 0x18,3
00B2 01C0 xjmp L32
00B4 L31:
00B4 .dbline 75
00B4 ; else
00B4 ; clr_data;
00B4 C398 cbi 0x18,3
00B6 L32:
00B6 .dbline 77
00B6 C498 cbi 0x18,4
00B8 .dbline 78
00B8 08E0 ldi R16,8
00BA A2DF xcall _delay_us
00BC .dbline 79
00BC C49A sbi 0x18,4
00BE .dbline 80
00BE 6695 lsr R22
00C0 .dbline 81
00C0 08E0 ldi R16,8
00C2 9EDF xcall _delay_us
00C4 .dbline 82
00C4 L28:
00C4 .dbline 70
00C4 4395 inc R20
00C6 L30:
00C6 .dbline 70
00C6 4330 cpi R20,3
00C8 78F3 brlo L27
00CA .dbline 83
00CA ;
00CA ; clr_wr;
00CA ; delay_us(8);
00CA ; set_wr;
00CA ; mod=mod>>1;
00CA ; delay_us(8);
00CA ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -