📄 课程设计.s
字号:
.area idata
.byte 14,126
.area data(ram, con, rel)
.dbfile F:\调试\计算器\课程设计.c
.blkb 2
.area idata
.byte 'N,95
.area data(ram, con, rel)
.dbfile F:\调试\计算器\课程设计.c
.blkb 2
.area idata
.byte 'U,43
.area data(ram, con, rel)
.dbfile F:\调试\计算器\课程设计.c
.blkb 2
.area idata
.byte 93,124
.area data(ram, con, rel)
.dbfile F:\调试\计算器\课程设计.c
.blkb 2
.area idata
.byte 41,32
.area data(ram, con, rel)
.dbfile F:\调试\计算器\课程设计.c
.blkb 2
.area idata
.byte 'T,123
.area data(ram, con, rel)
.dbfile F:\调试\计算器\课程设计.c
.blkb 2
.area idata
.byte 91,125
.area data(ram, con, rel)
.dbfile F:\调试\计算器\课程设计.c
.blkb 2
.area idata
.byte 'L,58
.area data(ram, con, rel)
.dbfile F:\调试\计算器\课程设计.c
.blkb 2
.area idata
.byte 'R,34
.area data(ram, con, rel)
.dbfile F:\调试\计算器\课程设计.c
.blkb 2
.area idata
.byte 'A,60
.area data(ram, con, rel)
.dbfile F:\调试\计算器\课程设计.c
.blkb 2
.area idata
.byte 'I,62
.area data(ram, con, rel)
.dbfile F:\调试\计算器\课程设计.c
.blkb 2
.area idata
.byte 'J,63
.area data(ram, con, rel)
.dbfile F:\调试\计算器\课程设计.c
.blkb 2
.area idata
.byte 'q,46
.area data(ram, con, rel)
.dbfile F:\调试\计算器\课程设计.c
.blkb 2
.area idata
.byte 'p,48
.area data(ram, con, rel)
.dbfile F:\调试\计算器\课程设计.c
.blkb 2
.area idata
.byte 'i,49
.area data(ram, con, rel)
.dbfile F:\调试\计算器\课程设计.c
.blkb 2
.area idata
.byte 'r,50
.area data(ram, con, rel)
.dbfile F:\调试\计算器\课程设计.c
.blkb 2
.area idata
.byte 'z,51
.area data(ram, con, rel)
.dbfile F:\调试\计算器\课程设计.c
.blkb 2
.area idata
.byte 'k,52
.area data(ram, con, rel)
.dbfile F:\调试\计算器\课程设计.c
.blkb 2
.area idata
.byte 's,53
.area data(ram, con, rel)
.dbfile F:\调试\计算器\课程设计.c
.blkb 2
.area idata
.byte 't,54
.area data(ram, con, rel)
.dbfile F:\调试\计算器\课程设计.c
.blkb 2
.area idata
.byte 'l,55
.area data(ram, con, rel)
.dbfile F:\调试\计算器\课程设计.c
.blkb 2
.area idata
.byte 'u,56
.area data(ram, con, rel)
.dbfile F:\调试\计算器\课程设计.c
.blkb 2
.area idata
.byte 125,57
.area data(ram, con, rel)
.dbfile F:\调试\计算器\课程设计.c
.dbsym e Shifted _Shifted A[118:59:2]c
.area text(rom, con, rel)
.dbfile F:\调试\计算器\课程设计.c
.dbfunc e delay _delay fV
; i -> R20
; n -> R16
.even
_delay::
xcall push_gset1
.dbline -1
.dbline 161
; #include<iom128v.h>
; #include<eeprom.h>
; #include<macros.h>
; #define fosc 8000000 //晶振4MHZ
; #define BAUD 9600 //波特率
; #define ASK (PINE&0X40)
; #define SBT_ANSWER PORTE|=BIT(PORTE7)
; #define CLR_ANSWER PORTE&=~BIT(PORTE7)
; #define SBT_RESET PORTC|=BIT(PORTC3)
; #define CLR1_RESET PORTC&=~BIT(PORTC3)
; #define DPORT_A PORTA
; #define DATA1 0x20
; #define uchar unsigned char
; unsigned char flag_time=0; flag_computer=0;flag_test_v=0;
; unsigned char data=0,flag=0;
; unsigned char count_jiema=0;//解码键盘码
; unsigned char count_comp=0;//解码键盘码
; unsigned char keyzhi,temp1,key,jy=0;
; unsigned long value=0,valuefirst=0,rezult=0;
; unsigned char flag_add=0,flag_sub=0,flag_mul=0,flag_mod=0;
; unsigned char DisNumx=0,DisNumy=0, Shift=0,Key_UP=0;
; unsigned char put_dete[];
; unsigned char table1[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46};
; unsigned char UnShifted[71][2] = {
; 0x1C, 'a',
; 0x32, 'b',
; 0x21, 'c',
; 0x23, 'd',
; 0x24, 'e',
; 0x2B, 'f',
; 0x34, 'g',
; 0x33, 'h',
; 0x43, 'i',
; 0x3B, 'j',
; 0x42, 'k',
; 0x4B, 'l',
; 0x3A, 'm',
; 0x31, 'n',
; 0x44, 'o',
; 0x4D, 'p',
; 0x15, 'q',
; 0x2D, 'r',
; 0x1B, 's',
; 0x2C, 't',
; 0x3C, 'u',
; 0x2A, 'v',
; 0x1D, 'w',
; 0x22, 'x',
; 0x35, 'y',
; 0x1A, 'z',
; 0x45, '0',
; 0x16, '1',
; 0x1E, '2',
; 0x26, '3',
; 0x25, '4',
; 0x2E, '5',
; 0x36, '6',
; 0x3D, '7',
; 0x3E, '8',
; 0x46, '9',
; 0x0E, '`',
; 0x4E, '-',
; 0x55, '=',
; 0x5D, '\\',
; 0x29, ' ',
; 0x54, '[',
; 0x5B, ']',
; 0x4C, ';',
; 0x52, '\'',
; 0x41, ',',
; 0x49, '.',
; 0x4A, '/',
; 0x71, '.',
; 0x70, '0',//小键盘
; 0x69, '1',
; 0x72, '2',
; 0x7A, '3',
; 0x6B, '4',
; 0x73, '5',
; 0x74, '6',
; 0x6C, '7',
; 0x75, '8',
; 0x7D, '9',
; 0x79, '+',
; 0x7B, '-',
; 0x7c, '*',
; 0x4A, '/',
; 0x5a, ' ',//enter
; 0x76, ' ',//Esc
; 0x75, ' ',// { up }
; 0x72, ' ',// { down }
; 0x6B, ' ',// { left }
; 0x74, ' ',// { right }
; 0x66, ' ',//(删去键)
;
; };
;
; unsigned char Shifted[59][2] = {
; 0x1C, 'A',
; 0x32, 'B',
; 0x21, 'C',
; 0x23, 'D',
; 0x24, 'E',
; 0x2B, 'F',
; 0x34, 'G',
; 0x33, 'H',
; 0x43, 'I',
; 0x3B, 'J',
; 0x42, 'K',
; 0x4B, 'L',
; 0x3A, 'M',
; 0x31, 'N',
; 0x44, 'O',
; 0x4D, 'P',
; 0x15, 'Q',
; 0x2D, 'R',
; 0x1B, 'S',
; 0x2C, 'T',
; 0x3C, 'U',
; 0x2A, 'V',
; 0x1D, 'W',
; 0x22, 'X',
; 0x35, 'Y',
; 0x1A, 'Z',
; 0x45, '0',
; 0x16, '1',
; 0x1E, '2',
; 0x26, '3',
; 0x25, '4',
; 0x2E, '5',
; 0x36, '6',
; 0x3D, '7',
; 0x3E, '8',
; 0x46, '9',
; 0x0E, '~',
; 0x4E, '_',
; 0x55, '+',
; 0x5D, '|',
; 0x29, ' ',
; 0x54, '{',
; 0x5B, '}',
; 0x4C, ':',
; 0x52, '"',
; 0x41, '<',
; 0x49, '>',
; 0x4A, '?',
; 0x71, '.',
; 0x70, '0',
; 0x69, '1',
; 0x72, '2',
; 0x7A, '3',
; 0x6B, '4',
; 0x73, '5',
; 0x74, '6',
; 0x6C, '7',
; 0x75, '8',
; 0x7D, '9',
; };
;
; void delay(unsigned char n)
; {
.dbline 163
; unsigned char i;
; for(;n>0;n--)
xjmp L5
L2:
.dbline 164
clr R20
xjmp L9
L6:
.dbline 164
L7:
.dbline 164
inc R20
L9:
.dbline 164
cpi R20,200
brlo L6
L3:
.dbline 163
dec R16
L5:
.dbline 163
clr R2
cp R2,R16
brlo L2
.dbline -2
L1:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym r n 16 c
.dbend
.dbfunc e initail_ocmj _initail_ocmj fV
.even
_initail_ocmj::
.dbline -1
.dbline 168
; for(i=0;i<200;i++);
; }
; /**************************************/
; void initail_ocmj(void)
; {
.dbline 169
; MCUCR=0X00;
clr R2
out 0x35,R2
.dbline 170
; DDRA=0XFF;
ldi R24,255
out 0x1a,R24
.dbline 171
; DPORT_A=0XFF;
out 0x1b,R24
.dbline 172
; DDRE=0X80; ///PORTE.7作为输出请求信号,PE3为检查忙不忙信号
ldi R24,128
out 0x2,R24
.dbline 173
; DDRD=0XFF;
ldi R24,255
out 0x11,R24
.dbline 174
; PORTD=0XfF;
out 0x12,R24
.dbline 175
; PORTE=0Xff; //PE初使化为高电平
out 0x3,R24
.dbline 176
; DDRC=0X08; //PC3复位
ldi R24,8
out 0x14,R24
.dbline 177
; CLR1_RESET;
cbi 0x15,3
.dbline 178
; delay_nms(20);
ldi R16,20
ldi R17,0
xcall _delay_nms
.dbline 179
; SBT_RESET;
sbi 0x15,3
.dbline 180
; CLR_ANSWER;//关闭请求信号
cbi 0x3,7
.dbline 181
; delay(100);
ldi R16,100
xcall _delay
.dbline -2
L10:
.dbline 0 ; func end
ret
.dbend
.dbfunc e ocmj_write _ocmj_write fV
; adata -> R16
.even
_ocmj_write::
.dbline -1
.dbline 185
; }
; /***************************************/
; void ocmj_write(unsigned char adata)
; {
L12:
.dbline 186
L13:
.dbline 186
; while(ASK);//高电平就等待
sbic 0x1,6
rjmp L12
.dbline 187
; DPORT_A=adata;//先给数据给PA
out 0x1b,R16
.dbline 188
; _NOP(); //延时
nop
.dbline 189
; SBT_ANSWER;//请求信号
sbi 0x3,7
.dbline 190
; _NOP();
nop
L15:
.dbline 191
L16:
.dbline 191
; while(ASK==0);//等待数据传送完
sbis 0x1,6
rjmp L15
.dbline 192
; CLR_ANSWER; //关闭请求
cbi 0x3,7
.dbline -2
L11:
.dbline 0 ; func end
ret
.dbsym r adata 16 c
.dbend
.dbfunc e write_asiic _write_asiic fV
; asc_p -> y+4
; y -> R20
; x -> R22
.even
_write_asiic::
xcall push_gset2
mov R20,R18
mov R22,R16
.dbline -1
.dbline 197
; }
;
;
; void write_asiic(unsigned char x,unsigned char y,unsigned char asc_p)
; {
.dbline 198
; x+=4;
subi R22,252 ; addi 4
.dbline 199
; ocmj_write(0xf1);
ldi R16,241
xcall _ocmj_write
.dbline 200
; ocmj_write(x);
mov R16,R22
xcall _ocmj_write
.dbline 201
; ocmj_write(y);
mov R16,R20
xcall _ocmj_write
.dbline 202
; ocmj_write(asc_p);
ldd R16,y+4
xcall _ocmj_write
.dbline -2
L18:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym l asc_p 4 c
.dbsym r y 20 c
.dbsym r x 22 c
.dbend
.dbfunc e DisplayListChar _DisplayListChar fV
; asc_p -> R20
; i -> R22
; y -> R10
; x -> R12
.even
_DisplayListChar::
xcall push_gset4
mov R10,R18
mov R12,R16
.dbline -1
.dbline 209
;
; }
; /********************************************/
;
; /**********************************************/
; void DisplayListChar(unsigned char x,unsigned char y)
; {
.dbline 211
; unsigned char i,asc_p;
; asc_p=' ';
ldi R20,32
.dbline 212
; x+=4;
mov R24,R12
subi R24,252 ; addi 4
mov R12,R24
.dbline 213
; for(i=0;i<16;i++)
clr R22
xjmp L23
L20:
.dbline 214
.dbline 214
ldi R16,241
xcall _ocmj_write
.dbline 215
mov R16,R12
add R16,R22
xcall _ocmj_write
.dbline 216
mov R16,R10
xcall _ocmj_write
.dbline 217
mov R16,R20
xcall _ocmj_write
.dbline 218
L21:
.dbline 213
inc R22
L23:
.dbline 213
cpi R22,16
brlo L20
.dbline -2
L19:
xcall pop_gset4
.dbline 0 ; func end
ret
.dbsym r asc_p 20 c
.dbsym r i 22 c
.dbsym r y 10 c
.dbsym r x 12 c
.dbend
.dbfunc e bmp_tran _bmp_tran fV
; j -> R20
; i -> R14
; bmp_p -> R22,R23
; width -> R10
; high -> R12
; y -> y+12
; x -> y+10
.even
_bmp_tran::
xcall push_arg4
xcall push_gset5
ldd R12,y+14
ldd R10,y+16
ldd R22,y+18
ldd R23,y+19
.dbline -1
.dbline 228
; { ocmj_write(0xf1);
; ocmj_write(x+i);
; ocmj_write(y);
; ocmj_write(asc_p);
; }
;
; }
; //***************************************************************************//
; /* 传送bmp点阵数据到LCD */
; /* x:0~15(字节为单位) y:0~64 */
; /* bmp_p:指向图形数据的指针 */
; /* high:位图高度(点阵行为单位) */
; /* width:位图宽度(以字节为单位)? */
; void bmp_tran(unsigned char x,unsigned char y,unsigned char high,unsigned char width,const unsigned char *bmp_p)
; {
.dbline 230
; unsigned char i,j;
; x+=4;
ldd R24,y+10
subi R24,252 ; addi 4
std y+10,R24
.dbline 231
; for(j=0;j<high;j++)
clr R20
xjmp L28
L25:
.dbline 232
; {
.dbline 233
; for(i=0;i<width;i++)
clr R14
xjmp L32
L29:
.dbline 234
.dbline 235
ldi R16,243
xcall _ocmj_write
.dbline 236
ldd R16,y+10
xcall _ocmj_write
.dbline 237
ldd R16,y+12
xcall _ocmj_write
.dbline 238
movw R30,R22
lpm R16,Z
xcall _ocmj_write
.dbline 239
subi R22,255 ; offset = 1
sbci R23,255
.dbline 240
ldd R0,y+10
inc R0
std y+10,R0
.dbline 241
L30:
.dbline 233
inc R14
L32:
.dbline 233
cp R14,R10
brlo L29
.dbline 242
ldd R0,y+10
sub R0,R10
std y+10,R0
.dbline 243
ldd R0,y+12
inc R0
std y+12,R0
.dbline 244
L26:
.dbline 231
inc R20
L28:
.dbline 231
cp R20,R12
brlo L25
.dbline -2
L24:
xcall pop_gset5
adiw R28,4
.dbline 0 ; func end
ret
.dbsym r j 20 c
.dbsym r i 14 c
.dbsym r bmp_p 22 pkc
.dbsym r width 10 c
.dbsym r high 12 c
.dbsym l y 12 c
.dbsym l x 10 c
.dbend
.dbfunc e clr _clr fV
.even
_clr::
.dbline -1
.dbline 248
; {
; ocmj_write(0xf3);//图形
; ocmj_write(x);
; ocmj_write(y);
; ocmj_write(*bmp_p);
; bmp_p++;
; x++;
; }
; x-=width;
; y++;
; }
; }
;
; void clr(void)
; {
.dbline 249
; ocmj_write(0xf4);
ldi R16,244
xcall _ocmj_write
.dbline -2
L33:
.dbline 0 ; func end
ret
.dbend
.dbfunc e write_ASCII _write_ASCII fV
; data -> y+6
; yy -> y+4
; xx -> R20,R21
; type -> R22,R23
.even
_write_ASCII::
xcall push_gset2
movw R20,R18
movw R22,R16
.dbline -1
.dbline 256
; }
;
; /**********************************************/
; /* 写ASCII码初始化 *////找代码//X轴只能从4,5,6,7。....18 19开始,Y=0,16,32,48
; /**********************************************///只能显示16*4个字符
; void write_ASCII(unsigned type,unsigned xx,unsigned yy,unsigned data)
; {
.dbline 257
; ocmj_write(type);//0xf9 ASCII码代码
mov R16,R22
xcall _ocmj_write
.dbline 258
; ocmj_write(xx);
mov R16,R20
xcall _ocmj_write
.dbline 259
; ocmj_write(yy);
ldd R16,y+4
ldd R17,y+5
xcall _ocmj_write
.dbline 260
; ocmj_write(data);
ldd R16,y+6
ldd R17,y+7
xcall _ocmj_write
.dbline -2
L34:
xcall pop_gset2
.dbline 0 ; func end
ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -