📄 160104_s6b0719.s
字号:
subi R22,255 ; offset = 1
sbci R23,255
.dbline 379
L83:
.dbline 376
inc R14
L85:
.dbline 376
cp R14,R12
brlo L82
.dbline 380
ldd R0,y+12
inc R0
std y+12,R0
.dbline 381
L79:
.dbline 373
inc R20
L81:
.dbline 373
cp R20,R10
brlo L78
.dbline -2
L77:
xcall pop_gset5
adiw R28,4
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym r j 14 c
.dbsym r data 22 pkc
.dbsym r h 10 c
.dbsym r w 12 c
.dbsym l add_y 12 c
.dbsym l add_x 10 c
.dbend
.dbfunc e wri_ico _wri_ico fV
; i -> <dead>
; data -> R20
; x -> R22
.even
_wri_ico::
xcall push_gset2
mov R20,R18
mov R22,R16
.dbline -1
.dbline 389
; { write_data(*data);
; data++;
; }
; add_y++;
; }
; }
; /*======================================
; 图标显示函数
; x 坐标
; data 0 暗; 1 亮
; =======================================*/
; void wri_ico(uchar x,uchar data)
; { uchar i;
.dbline 390
; set_page_add(13);
ldi R16,13
xcall _set_page_add
.dbline 391
; set_column_add(x);
mov R16,R22
xcall _set_column_add
.dbline 392
; write_data(data);
mov R16,R20
xcall _write_data
.dbline -2
L86:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym l i 1 c
.dbsym r data 20 c
.dbsym r x 22 c
.dbend
.dbfunc e wri_led _wri_led fV
; data -> R20
; add -> R22
; i -> R10
; data_ico -> R12
; add_ico -> R20
.even
_wri_led::
xcall push_gset4
mov R12,R18
mov R20,R16
.dbline -1
.dbline 400
; }
;
; /*======================================
; 用图标显示数值
; add_ico 段地址;data 显示数据,先送低位
; ======================================*/
; void wri_led(uchar add_ico,uchar data_ico)
; { uchar i;
.dbline 402
; uchar add,data;
; add = add_ico;
mov R22,R20
.dbline 403
; for (i=0;i<7;i++)
clr R10
xjmp L91
L88:
.dbline 404
.dbline 404
mov R20,R12
andi R20,1
.dbline 405
mov R18,R20
mov R16,R22
xcall _wri_ico
.dbline 406
lsr R12
.dbline 407
inc R22
.dbline 408
L89:
.dbline 403
inc R10
L91:
.dbline 403
mov R24,R10
cpi R24,7
brlo L88
.dbline -2
L87:
xcall pop_gset4
.dbline 0 ; func end
ret
.dbsym r data 20 c
.dbsym r add 22 c
.dbsym r i 10 c
.dbsym r data_ico 12 c
.dbsym r add_ico 20 c
.dbend
.dbfunc e wri_led_pressure _wri_led_pressure fV
; j -> R20
; add -> R22
; i -> R10
; data_pressure -> R12,R13
.even
_wri_led_pressure::
xcall push_gset4
movw R12,R16
.dbline -1
.dbline 415
; { data = data_ico&0x01;
; wri_ico(add,data);
; data_ico = data_ico>>1;
; add++;
; }
; }
; /*======================================
; 用图标显示压力值
; 选ico段地址55-75
; ======================================*/
; void wri_led_pressure(uint data_pressure)
; { uchar i,j;
.dbline 417
; uchar add;
; add = 69;
ldi R22,69
.dbline 418
; for (i=0;i<3;i++)
clr R10
xjmp L96
L93:
.dbline 419
.dbline 419
ldi R18,10
ldi R19,0
movw R16,R12
xcall mod16u
mov R20,R16
.dbline 420
ldi R18,10
ldi R19,0
movw R16,R12
xcall div16u
movw R12,R16
.dbline 421
ldi R24,<_LED7Code
ldi R25,>_LED7Code
mov R30,R20
clr R31
add R30,R24
adc R31,R25
lpm R18,Z
mov R16,R22
xcall _wri_led
.dbline 422
subi R22,7
.dbline 423
L94:
.dbline 418
inc R10
L96:
.dbline 418
mov R24,R10
cpi R24,3
brlo L93
.dbline -2
L92:
xcall pop_gset4
.dbline 0 ; func end
ret
.dbsym r j 20 c
.dbsym r add 22 c
.dbsym r i 10 c
.dbsym r data_pressure 12 i
.dbend
.dbfunc e wri_line_h _wri_line_h fV
; l -> R22
; page -> R12
; line_data -> R22
; j -> R20
; length -> R10
; add_y -> R22
; add_x -> R20
.even
_wri_line_h::
xcall push_gset4
mov R22,R18
mov R20,R16
ldd R10,y+8
.dbline -1
.dbline 434
; { j = data_pressure%10;
; data_pressure /= 10;
; wri_led(add,LED7Code[j]);
; add -= 7;
; }
; }
;
;
; /*======================================
; 画横线函数
; add_x 行坐标0-104
; add_y 列坐标0-160
; length 长度
; ======================================*/
; void wri_line_h(uchar add_x,uchar add_y,uchar length)
; { uchar page,line_data;
.dbline 436
; uchar l,j;
; page = add_y>>3;//取页地址
mov R12,R22
lsr R12
lsr R12
lsr R12
.dbline 437
; l = add_y%8;
ldi R17,8
mov R16,R22
xcall mod8u
mov R22,R16
.dbline 438
; line_data=1<<l;
ldi R16,1
mov R17,R22
xcall lsl8
mov R22,R16
.dbline 439
; set_page_add(page);
mov R16,R12
xcall _set_page_add
.dbline 440
; set_column_add(add_x);
mov R16,R20
xcall _set_column_add
.dbline 441
; for (j=0;j<length;j++)
clr R20
xjmp L101
L98:
.dbline 442
.dbline 442
mov R16,R22
xcall _write_data
.dbline 443
L99:
.dbline 441
inc R20
L101:
.dbline 441
cp R20,R10
brlo L98
.dbline -2
L97:
xcall pop_gset4
.dbline 0 ; func end
ret
.dbsym r l 22 c
.dbsym r page 12 c
.dbsym r line_data 22 c
.dbsym r j 20 c
.dbsym r length 10 c
.dbsym r add_y 22 c
.dbsym r add_x 20 c
.dbend
.dbfunc e wri_line_v _wri_line_v fV
; data_end -> R20
; data_start -> R22
; page_end -> y+1
; j -> R12
; page_start -> y+0
; i -> R14
; page -> R10
; high -> y+16
; add_y -> R20
; add_x -> y+12
.even
_wri_line_v::
xcall push_arg4
xcall push_gset5
mov R20,R18
sbiw R28,2
.dbline -1
.dbline 453
; { write_data(line_data);
; }
; }
;
; /*======================================
; 画纵线函数
; add_x 行坐标0-104
; add_y 列坐标0-160
; high 高度
; ======================================*/
; void wri_line_v(uchar add_x,uchar add_y,uchar high)
; { uchar page_start,page_end;
.dbline 456
; uchar data_start,data_end;
; uchar i,j,page;
; page_start = add_y>>3;//取页地址
mov R2,R20
lsr R2
lsr R2
lsr R2
std y+0,R2
.dbline 457
; page_end = (add_y+high-1)>>3;//取页地址
mov R24,R20
ldd R0,y+16
add R24,R0
subi R24,1
lsr R24
lsr R24
lsr R24
std y+1,R24
.dbline 458
; data_start = 0xff<<( (add_y)%8 );
ldi R18,8
ldi R19,0
mov R16,R20
clr R17
xcall mod16s
movw R18,R16
ldi R16,255
ldi R17,0
xcall lsl16
mov R22,R16
.dbline 459
; data_end = 0xff>> (8-(add_y+high)%8);
ldd R2,y+16
clr R3
mov R16,R20
clr R17
add R16,R2
adc R17,R3
ldi R18,8
ldi R19,0
xcall mod16s
ldi R18,8
ldi R19,0
sub R18,R16
sbc R19,R17
ldi R16,255
ldi R17,0
xcall asr16
mov R20,R16
.dbline 460
; j = page_end-page_start+1;
ldd R24,y+1
ldd R0,y+0
sub R24,R0
subi R24,255 ; addi 1
mov R12,R24
.dbline 461
; page = page_start;
mov R10,R0
.dbline 462
; for (i=0;i<j;i++,page++)
clr R14
xjmp L106
L103:
.dbline 463
; { set_page_add(page);
.dbline 463
mov R16,R10
xcall _set_page_add
.dbline 464
; set_column_add(add_x);
ldd R16,y+12
xcall _set_column_add
.dbline 465
; if(page==page_start) write_data(data_start);
ldd R0,y+0
cp R10,R0
brne L107
.dbline 465
mov R16,R22
xcall _write_data
xjmp L108
L107:
.dbline 466
; else if(page==page_end) write_data(data_end);
ldd R0,y+1
cp R10,R0
brne L109
.dbline 466
mov R16,R20
xcall _write_data
xjmp L110
L109:
.dbline 467
; else write_data(0xff);
ldi R16,255
xcall _write_data
L110:
L108:
.dbline 468
L104:
.dbline 462
inc R14
inc R10
L106:
.dbline 462
cp R14,R12
brlo L103
.dbline -2
L102:
adiw R28,2
xcall pop_gset5
adiw R28,4
.dbline 0 ; func end
ret
.dbsym r data_end 20 c
.dbsym r data_start 22 c
.dbsym l page_end 1 c
.dbsym r j 12 c
.dbsym l page_start 0 c
.dbsym r i 14 c
.dbsym r page 10 c
.dbsym l high 16 c
.dbsym r add_y 20 c
.dbsym l add_x 12 c
.dbend
.dbfunc e hex_to_ascii _hex_to_ascii fV
; i -> R20,R21
; asc -> R22,R23
; hex -> R10
.even
_hex_to_ascii::
xcall push_gset3
movw R22,R18
mov R10,R16
.dbline -1
.dbline 472
; }
; }
;
; void hex_to_ascii(uchar hex,uchar *asc)
; { int i;
.dbline 473
; for (i=2;i>=0;i--)
ldi R20,2
ldi R21,0
L112:
.dbline 474
.dbline 474
ldi R17,10
mov R16,R10
xcall mod8u
mov R24,R16
subi R24,208 ; addi 48
movw R30,R20
add R30,R22
adc R31,R23
std z+0,R24
.dbline 475
ldi R17,10
mov R16,R10
xcall div8u
mov R10,R16
.dbline 476
L113:
.dbline 473
subi R20,1
sbci R21,0
.dbline 473
cpi R20,0
ldi R30,0
cpc R21,R30
brge L112
.dbline 477
; { asc[i]=hex%10+48;
; hex = hex/10;
; }
; asc[3]=0;
clr R2
movw R30,R22
std z+3,R2
.dbline -2
L111:
xcall pop_gset3
.dbline 0 ; func end
ret
.dbsym r i 20 I
.dbsym r asc 22 pc
.dbsym r hex 10 c
.dbend
.dbfunc e wri_hex _wri_hex fV
; asc_temp -> y+2
; hex -> y+10
; add_y -> R22
; add_x -> R20
.even
_wri_hex::
xcall push_gset2
mov R22,R18
mov R20,R16
sbiw R28,6
.dbline -1
.dbline 481
; }
;
; void wri_hex(uchar add_x,uchar add_y,uchar hex)
; { uchar asc_temp[4];
.dbline 482
; hex_to_ascii(hex,asc_temp);
movw R18,R28
subi R18,254 ; offset = 2
sbci R19,255
ldd R16,y+10
xcall _hex_to_ascii
.dbline 483
; wri_asc_8x16_s(add_x,add_y,asc_temp);
movw R24,R28
adiw R24,2
std y+1,R25
std y+0,R24
mov R18,R22
mov R16,R20
xcall _wri_asc_8x16_s
.dbline -2
L116:
adiw R28,6
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym l asc_temp 2 A[4:4]c
.dbsym l hex 10 c
.dbsym r add_y 22 c
.dbsym r add_x 20 c
.dbend
.dbfunc e menu_main _menu_main fV
; i -> <dead>
.even
_menu_main::
sbiw R28,6
.dbline -1
.dbline 487
; }
;
; void menu_main(void)
; { uchar i;
.dbline 488
; wri_chinese_s(44,1,"收缩压");
ldi R24,<L118
ldi R25,>L118
std y+1,R25
std y+0,R24
ldi R18,1
ldi R16,44
xcall _wri_chinese_s
.dbline 489
; wri_asc_8x16_s(100,1,"100");
ldi R24,<L119
ldi R25,>L119
std y+1,R25
std y+0,R24
ldi R18,1
ldi R16,100
xcall _wri_asc_8x16_s
.dbline 490
; wri_asc_8x16_s(124,1,"mmHg");
ldi R24,<L120
ldi R25,>L120
std y+1,R25
std y+0,R24
ldi R18,1
ldi R16,124
xcall _wri_asc_8x16_s
.dbline 491
; wri_image(30,1,14,2,round);
ldi R24,<_round
ldi R25,>_round
std y+5,R25
std y+4,R24
ldi R24,2
std y+2,R24
ldi R24,14
std y+0,R24
ldi R18,1
ldi R16,30
xcall _wri_image
.dbline 493
;
; wri_chinese_s(44,4,"舒张压");
ldi R24,<L121
ldi R25,>L121
std y+1,R25
std y+0,R24
ldi R18,4
ldi R16,44
xcall _wri_chinese_s
.dbline 494
; wri_asc_8x16_s(100,4,"100");
ldi R24,<L119
ldi R25,>L119
std y+1,R25
std y+0,R24
ldi R18,4
ldi R16,100
xcall _wri_asc_8x16_s
.dbline 495
; wri_asc_8x16_s(124,4,"mmHg");
ldi R24,<L120
ldi R25,>L120
std y+1,R25
std y+0,R24
ldi R18,4
ldi R16,124
xcall _wri_asc_8x16_s
.dbline 497
;
; wri_chinese_s(44,7,"心率");
ldi R24,<L122
ldi R25,>L122
std y+1,R25
std y+0,R24
ldi R18,7
ldi R16,44
xcall _wri_chinese_s
.dbline 498
; wri_asc_8x16_s(100,7,"100");
ldi R24,<L119
ldi R25,>L119
std y+1,R25
std y+0,R24
ldi R18,7
ldi R16,100
xcall _wri_asc_8x16_s
.dbline 499
; wri_asc_8x16_s(124,7,"/Min");
ldi R24,<L123
ldi R25,>L123
std y+1,R25
std y+0,R24
ldi R18,7
ldi R16,124
xcall _wri_asc_8x16_s
.dbline 501
;
; wri_chinese_s(44,11,"高级设置");
ldi R24,<L124
ldi R25,>L124
std y+1,R25
std y+0,R24
ldi R18,11
ldi R16,44
xcall _wri_chinese_s
.dbline 503
;
; wri_line_h(16,7,10);
ldi R24,10
std y+0,R24
ldi R18,7
ldi R16,16
xcall _wri_line_h
.dbline 504
; wri_line_h(16,103,10);
ldi R24,10
std y+0,R24
ldi R18,103
ldi R16,16
xcall _wri_line_h
.dbline 505
; wri_line_v(16,7,96);
ldi R24,96
std y+0,R24
ldi R18,7
ldi R16,16
xcall _wri_line_v
.dbline 506
; wri_line_v(26,7,96);
ldi R24,96
std y+0,R24
ldi R18,7
ldi R16,26
xcall _wri_line_v
.dbline 508
;
; wri_asc_4x8_s(4,0,"300");
ldi R24,<L125
ldi R25,>L125
std y+1,R25
std y+0,R24
clr R18
ldi R16,4
xcall _wri_asc_4x8_s
.dbline 509
; wri_asc_4x8_s(4,2,"250");
ldi R24,<L126
ldi R25,>L126
std y+1,R25
std y+0,R24
ldi R18,2
ldi R16,4
xcall _wri_asc_4x8_s
.dbline 510
; wri_asc_4x8_s(4,4,"200");
ldi R24,<L127
ldi R25,>L127
std y+1,R25
std y+0,R24
ldi R18,4
ldi R16,4
xcall _wri_asc_4x8_s
.dbline 511
; wri_asc_4x8_s(4,6,"150");
ldi R24,<L128
ldi R25,>L128
std y+1,R25
std y+0,R24
ldi R18,6
ldi R16,4
xcall _wri_asc_4x8_s
.dbline 512
; wri_asc_4x8_s(4,8,"100");
ldi R24,<L119
ldi R25,>L119
std y+1,R25
std y+0,R24
ldi R18,8
ldi R16,4
xcall _wri_asc_4x8_s
.dbline 513
; wri_asc_4x8_s(8,10,"50");
ldi R24,<L129
ldi R25,>L129
std y+1,R25
std y+0,R24
ldi R18,10
ldi R16,8
xcall _wri_asc_4x8_s
.dbline 514
; wri_asc_4x8_s(12,12,"0");
ldi R24,<L130
ldi R25,>L130
std y+1,R25
std y+0,R24
ldi R18,12
ldi R16,12
xcall _wri_asc_4x8_s
.dbline -2
L117:
adiw R28,6
.dbline 0 ; func end
ret
.dbsym l i 7 c
.dbend
.dbfunc e main _main fV
.even
_main::
.dbline -1
.dbline 520
;
; }
;
;
; void main(void)
; {
.dbline 521
; init_160104();
xcall _init_160104
.dbline 522
; menu_main();
xcall _menu_main
.dbline -2
L131:
.dbline 0 ; func end
ret
.dbend
.area bss(ram, con, rel)
.dbfile 160104_S6B0719.c
_lcd_currentY::
.blkb 1
.dbsym e lcd_currentY _lcd_currentY c
_lcd_currentX::
.blkb 1
.dbsym e lcd_currentX _lcd_currentX c
_lcd_data::
.blkb 1
.dbsym e lcd_data _lcd_data c
_lcd_status::
.blkb 1
.dbsym e lcd_status _lcd_status c
_ChineseCode::
.blkb 2
.dbfile C:\Documents and Settings\wsr\桌面\上传例子/zm.h
.dbsym e ChineseCode _ChineseCode A[2:1]ki
_ChineseCharDot::
.blkb 1
.dbsym e ChineseCharDot _ChineseCharDot A[1:1]kc
.area data(ram, con, rel)
.dbfile C:\Documents and Settings\wsr\桌面\上传例子/zm.h
L130:
.blkb 2
.area idata
.byte 48,0
.area data(ram, con, rel)
.dbfile C:\Documents and Settings\wsr\桌面\上传例子/zm.h
L129:
.blkb 3
.area idata
.byte 53,48,0
.area data(ram, con, rel)
.dbfile C:\Documents and Settings\wsr\桌面\上传例子/zm.h
L128:
.blkb 4
.area idata
.byte 49,53,48,0
.area data(ram, con, rel)
.dbfile C:\Documents and Settings\wsr\桌面\上传例子/zm.h
L127:
.blkb 4
.area idata
.byte 50,48,48,0
.area data(ram, con, rel)
.dbfile C:\Documents and Settings\wsr\桌面\上传例子/zm.h
L126:
.blkb 4
.area idata
.byte 50,53,48,0
.area data(ram, con, rel)
.dbfile C:\Documents and Settings\wsr\桌面\上传例子/zm.h
L125:
.blkb 4
.area idata
.byte 51,48,48,0
.area data(ram, con, rel)
.dbfile C:\Documents and Settings\wsr\桌面\上传例子/zm.h
L124:
.blkb 9
.area idata
.byte 184,223,188,182,201,232,214,195,0
.area data(ram, con, rel)
.dbfile C:\Documents and Settings\wsr\桌面\上传例子/zm.h
L123:
.blkb 5
.area idata
.byte 47,'M,'i,'n,0
.area data(ram, con, rel)
.dbfile C:\Documents and Settings\wsr\桌面\上传例子/zm.h
L122:
.blkb 5
.area idata
.byte 208,196,194,202,0
.area data(ram, con, rel)
.dbfile C:\Documents and Settings\wsr\桌面\上传例子/zm.h
L121:
.blkb 7
.area idata
.byte 202,230,213,197,209,185,0
.area data(ram, con, rel)
.dbfile C:\Documents and Settings\wsr\桌面\上传例子/zm.h
L120:
.blkb 5
.area idata
.byte 'm,'m,'H,'g,0
.area data(ram, con, rel)
.dbfile C:\Documents and Settings\wsr\桌面\上传例子/zm.h
L119:
.blkb 4
.area idata
.byte 49,48,48,0
.area data(ram, con, rel)
.dbfile C:\Documents and Settings\wsr\桌面\上传例子/zm.h
L118:
.blkb 7
.area idata
.byte 202,213,203,245,209,185,0
.area data(ram, con, rel)
.dbfile C:\Documents and Settings\wsr\桌面\上传例子/zm.h
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -