📄 gui12864.lis
字号:
000C ; char signy; /* Y方向标识 */
000C ; if(x1>123 | y1>63 | x2>123 | y2>63)
000C 8BE7 ldi R24,123
000E 0888 ldd R0,y+16
0010 8015 cp R24,R0
0012 20F4 brsh L4
0014 X0:
0014 81E0 ldi R24,1
0016 90E0 ldi R25,0
0018 7C01 movw R14,R24
001A 02C0 xjmp L5
001C L4:
001C EE24 clr R14
001E FF24 clr R15
0020 L5:
0020 8FE3 ldi R24,63
0022 8A15 cp R24,R10
0024 20F4 brsh L6
0026 X1:
0026 81E0 ldi R24,1
0028 90E0 ldi R25,0
002A 6C01 movw R12,R24
002C 02C0 xjmp L7
002E L6:
002E CC24 clr R12
0030 DD24 clr R13
0032 L7:
0032 8BE7 ldi R24,123
0034 0C88 ldd R0,y+20
0036 8015 cp R24,R0
0038 18F4 brsh L8
003A X2:
003A 61E0 ldi R22,1
003C 70E0 ldi R23,0
003E 02C0 xjmp L9
0040 L8:
0040 6627 clr R22
0042 7727 clr R23
0044 L9:
0044 8FE3 ldi R24,63
0046 0E88 ldd R0,y+22
0048 8015 cp R24,R0
004A 18F4 brsh L10
004C X3:
004C 41E0 ldi R20,1
004E 50E0 ldi R21,0
0050 02C0 xjmp L11
0052 L10:
0052 4427 clr R20
0054 5527 clr R21
0056 L11:
0056 1701 movw R2,R14
0058 2C28 or R2,R12
005A 3D28 or R3,R13
005C 262A or R2,R22
005E 372A or R3,R23
0060 242A or R2,R20
0062 352A or R3,R21
0064 2220 tst R2
0066 11F4 brne X4
0068 3320 tst R3
006A 09F0 breq L2
006C X4:
006C .dbline 56
006C ; return;
006C BAC0 xjmp L1
006E L2:
006E .dbline 57
006E ; x = x1;
006E 0888 ldd R0,y+16
0070 0A82 std y+2,R0
0072 .dbline 58
0072 ; y = y1;
0072 AB82 std y+3,R10
0074 .dbline 60
0074 ; /* 1.计算X方向的参数 */
0074 ; if(x2 > x1)
0074 2888 ldd R2,y+16
0076 3324 clr R3
0078 4C88 ldd R4,y+20
007A 5524 clr R5
007C 2414 cp R2,R4
007E 3504 cpc R3,R5
0080 4CF4 brge L12
0082 X5:
0082 .dbline 61
0082 ; {
0082 .dbline 62
0082 ; dx = x2 - x1;
0082 3324 clr R3
0084 5524 clr R5
0086 4218 sub R4,R2
0088 5308 sbc R5,R3
008A 5D82 std y+5,R5
008C 4C82 std y+4,R4
008E .dbline 63
008E ; signx = 1;
008E CC24 clr R12
0090 C394 inc R12
0092 .dbline 64
0092 ; }
0092 14C0 xjmp L13
0094 L12:
0094 .dbline 65
0094 ; else if(x2 < x1)
0094 0C88 ldd R0,y+20
0096 0889 ldd R16,y+16
0098 0016 cp R0,R16
009A 58F4 brsh L14
009C X6:
009C .dbline 66
009C ; {
009C .dbline 67
009C ; dx = x1 - x2;
009C 202C mov R2,R0
009E 3324 clr R3
00A0 402E mov R4,R16
00A2 5524 clr R5
00A4 4218 sub R4,R2
00A6 5308 sbc R5,R3
00A8 5D82 std y+5,R5
00AA 4C82 std y+4,R4
00AC .dbline 68
00AC ; signx = -1;
00AC 8FEF ldi R24,255
00AE C82E mov R12,R24
00B0 .dbline 69
00B0 ; }
00B0 05C0 xjmp L15
00B2 L14:
00B2 .dbline 71
00B2 ; else
00B2 ; {
00B2 .dbline 72
00B2 ; dx = 0;
00B2 0024 clr R0
00B4 1124 clr R1
00B6 1D82 std y+5,R1
00B8 0C82 std y+4,R0
00BA .dbline 73
00BA ; signx = 0;
00BA CC24 clr R12
00BC .dbline 74
00BC ; }
00BC L15:
00BC L13:
00BC .dbline 76
00BC ; /* 2.计算Y方向的参数 */
00BC ; if(y2 > y1)
00BC 2A2C mov R2,R10
00BE 3324 clr R3
00C0 4E88 ldd R4,y+22
00C2 5524 clr R5
00C4 2414 cp R2,R4
00C6 3504 cpc R3,R5
00C8 44F4 brge L16
00CA X7:
00CA .dbline 77
00CA ; {
00CA .dbline 78
00CA ; dy = y2 - y1;
00CA 3324 clr R3
00CC 642D mov R22,R4
00CE 7727 clr R23
00D0 6219 sub R22,R2
00D2 7309 sbc R23,R3
00D4 .dbline 79
00D4 ; signy = 1;
00D4 EE24 clr R14
00D6 E394 inc R14
00D8 .dbline 80
00D8 ; }
00D8 0FC0 xjmp L17
00DA L16:
00DA .dbline 81
00DA ; else if(y2 < y1)
00DA 0E88 ldd R0,y+22
00DC 0A14 cp R0,R10
00DE 48F4 brsh L18
00E0 X8:
00E0 .dbline 82
00E0 ; {
00E0 .dbline 83
00E0 ; dy = y1 - y2;
00E0 202C mov R2,R0
00E2 3324 clr R3
00E4 6A2D mov R22,R10
00E6 7727 clr R23
00E8 6219 sub R22,R2
00EA 7309 sbc R23,R3
00EC .dbline 84
00EC ; signy = -1;
00EC 8FEF ldi R24,255
00EE E82E mov R14,R24
00F0 .dbline 85
00F0 ; }
00F0 03C0 xjmp L19
00F2 L18:
00F2 .dbline 87
00F2 ; else
00F2 ; {
00F2 .dbline 88
00F2 ; dy = 0;
00F2 6627 clr R22
00F4 7727 clr R23
00F6 .dbline 89
00F6 ; signy = 0;
00F6 EE24 clr R14
00F8 .dbline 90
00F8 ; }
00F8 L19:
00F8 L17:
00F8 .dbline 92
00F8 ; /* 3.计算首个判断因子 */
00F8 ; p = 2*dy -dx;
00F8 5B01 movw R10,R22
00FA AA0C lsl R10
00FC BB1C rol R11
00FE 0C80 ldd R0,y+4
0100 1D80 ldd R1,y+5
0102 A018 sub R10,R0
0104 B108 sbc R11,R1
0106 .dbline 94
0106 ; /* 4a.以X方向增长画图 */
0106 ; if(dx >= dy)
0106 0616 cp R0,R22
0108 1706 cpc R1,R23
010A 94F1 brlt L20
010C X9:
010C .dbline 95
010C ; {
010C .dbline 96
010C ; for(temp=0; temp<dx; temp++)
010C 4427 clr R20
010E 28C0 xjmp L25
0110 L22:
0110 .dbline 97
0110 ; {
0110 .dbline 98
0110 ; LcdDisplayDot(x,y,color); /* 画点 */
0110 288C ldd R2,y+24
0112 3324 clr R3
0114 3982 std y+1,R3
0116 2882 std y+0,R2
0118 2B81 ldd R18,y+3
011A 3327 clr R19
011C 0A81 ldd R16,y+2
011E 1127 clr R17
0120 0E940000 xcall _LcdDisplayDot
0124 .dbline 99
0124 ; if(p >= 0) /* 根据P来判断画哪一点 */
0124 C501 movw R24,R10
0126 8030 cpi R24,0
0128 E0E0 ldi R30,0
012A 9E07 cpc R25,R30
012C 84F0 brlt L26
012E X10:
012E .dbline 100
012E ; {
012E .dbline 101
012E ; x = x + signx;
012E 0A80 ldd R0,y+2
0130 0C0C add R0,R12
0132 0A82 std y+2,R0
0134 .dbline 102
0134 ; y = y + signy;
0134 0B80 ldd R0,y+3
0136 0E0C add R0,R14
0138 0B82 std y+3,R0
013A .dbline 103
013A ; p = p + 2*(dy - dx); /* dy,dx需要定义定义成有符号的,才能得到正确的值 */
013A 1B01 movw R2,R22
013C 0C80 ldd R0,y+4
013E 1D80 ldd R1,y+5
0140 2018 sub R2,R0
0142 3108 sbc R3,R1
0144 220C lsl R2
0146 331C rol R3
0148 A20C add R10,R2
014A B31C adc R11,R3
014C .dbline 104
014C ; }
014C 08C0 xjmp L27
014E L26:
014E .dbline 106
014E ; else
014E ; {
014E .dbline 107
014E ; x = x + signx;
014E 0A80 ldd R0,y+2
0150 0C0C add R0,R12
0152 0A82 std y+2,R0
0154 .dbline 108
0154 ; y = y;
0154 .dbline 109
0154 ; p = p + 2*dy;
0154 1B01 movw R2,R22
0156 220C lsl R2
0158 331C rol R3
015A A20C add R10,R2
015C B31C adc R11,R3
015E .dbline 110
015E ; }
015E L27:
015E .dbline 111
015E ; }
015E L23:
015E .dbline 96
015E 4395 inc R20
0160 L25:
0160 .dbline 96
0160 242E mov R2,R20
0162 3324 clr R3
0164 0C80 ldd R0,y+4
0166 1D80 ldd R1,y+5
0168 2014 cp R2,R0
016A 3104 cpc R3,R1
016C 8CF2 brlt L22
016E X11:
016E .dbline 112
016E ; }
016E 2FC0 xjmp L21
0170 L20:
0170 .dbline 114
0170 ; else
0170 ; {
0170 .dbline 115
0170 ; for(temp=0; temp<dy; temp++)
0170 4427 clr R20
0172 28C0 xjmp L31
0174 L28:
0174 .dbline 116
0174 ; {
0174 .dbline 117
0174 ; LcdDisplayDot(x,y,color); /* 画点 */
0174 288C ldd R2,y+24
0176 3324 clr R3
0178 3982 std y+1,R3
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -