📄 test.s
字号:
.module TEST.C
.area text(rom, con, rel)
.dbfile D:\工作\240X12~1\(000)\TEST.C
.dbfunc e port_init _port_init fV
.even
_port_init::
.dbline -1
.dbline 9
; // Target : M88
; // Crystal: 16.0000Mhz
; #include <iom88v.h>
; #include <macros.h>
; #include "240128.h"
; //#include "storeroom.h"
; //------------------------------------------------------------------------------
; void port_init(void)
; {
.dbline 10
; PORTB = 0xFF;
ldi R24,255
out 0x5,R24
.dbline 11
; DDRB = 0xFF;
out 0x4,R24
.dbline 12
; PORTC = 0xFF; //m103 output only
out 0x8,R24
.dbline 13
; DDRC = 0xFF;
out 0x7,R24
.dbline 14
; PORTD = 0xFF;
out 0xb,R24
.dbline 15
; DDRD = 0xFF;
out 0xa,R24
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbend
.dbfunc e init_devices _init_devices fV
.even
_init_devices::
.dbline -1
.dbline 18
; }
; void init_devices(void)
; {
.dbline 19
; CLI(); //disable all interrupts
cli
.dbline 20
; port_init();
rcall _port_init
.dbline 21
; MCUCR = 0x00;
clr R2
out 0x35,R2
.dbline 22
; EICRA = 0x00; //extended ext ints
sts 105,R2
.dbline 23
; EIMSK = 0x00;
out 0x1d,R2
.dbline 24
; TIMSK0 = 0x00; //timer 0 interrupt sources
sts 110,R2
.dbline 25
; TIMSK1 = 0x00; //timer 1 interrupt sources
sts 111,R2
.dbline 26
; TIMSK2 = 0x00; //timer 2 interrupt sources
sts 112,R2
.dbline 27
; PCMSK0 = 0x00; //pin change mask 0
sts 107,R2
.dbline 28
; PCMSK1 = 0x00; //pin change mask 1
sts 108,R2
.dbline 29
; PCMSK2 = 0x00; //pin change mask 2
sts 109,R2
.dbline 30
; PCICR = 0x00; //pin change enable
sts 104,R2
.dbline 31
; PRR = 0x00; //power controller
sts 100,R2
.dbline 32
; SEI(); //re-enable interrupts
sei
.dbline -2
L2:
.dbline 0 ; func end
ret
.dbend
.dbfunc e delay_1us _delay_1us fV
.even
_delay_1us::
.dbline -1
.dbline 39
; }
; //------------------------------------------------------------------------------
; /*********************************************************************
; 延时
; *********************************************************************/
; void delay_1us(void)
; {
.dbline 40
; asm("nop");asm("nop");asm("nop");
nop
.dbline 40
nop
.dbline 40
nop
.dbline -2
L3:
.dbline 0 ; func end
ret
.dbend
.dbfunc e delay_nus _delay_nus fV
; i -> R20,R21
; n -> R22,R23
.even
_delay_nus::
rcall push_gset2
movw R22,R16
.dbline -1
.dbline 43
; }
; void delay_nus(unsigned int n)
; {
.dbline 44
; unsigned int i=0;
clr R20
clr R21
.dbline 45
rjmp L8
L5:
.dbline 45
rcall _delay_1us
L6:
.dbline 45
subi R20,255 ; offset = 1
sbci R21,255
L8:
.dbline 45
; for (i=0;i<n;i++) delay_1us();
cp R20,R22
cpc R21,R23
brlo L5
.dbline -2
L4:
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r i 20 i
.dbsym r n 22 i
.dbend
.dbfunc e delay_1ms _delay_1ms fV
; i -> R20,R21
.even
_delay_1ms::
rcall push_gset1
.dbline -1
.dbline 48
; }
; void delay_1ms(void)
; {
.dbline 50
; unsigned int i;
; delay_nus(1000);
ldi R16,1000
ldi R17,3
rcall _delay_nus
.dbline 51
clr R20
clr R21
rjmp L13
L10:
.dbline 51
L11:
.dbline 51
subi R20,255 ; offset = 1
sbci R21,255
L13:
.dbline 51
; for (i=0;i<1;i++);
cpi R20,1
ldi R30,0
cpc R21,R30
brlo L10
.dbline -2
L9:
rcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 i
.dbend
.dbfunc e delay_nms _delay_nms fV
; i -> R20,R21
; n -> R22,R23
.even
_delay_nms::
rcall push_gset2
movw R22,R16
.dbline -1
.dbline 54
; }
; void delay_nms(unsigned int n)
; {
.dbline 55
; unsigned int i=0;
clr R20
clr R21
.dbline 56
rjmp L18
L15:
.dbline 56
rcall _delay_1ms
L16:
.dbline 56
subi R20,255 ; offset = 1
sbci R21,255
L18:
.dbline 56
; for (i=0;i<n;i++) delay_1ms();
cp R20,R22
cpc R21,R23
brlo L15
.dbline -2
L14:
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r i 20 i
.dbsym r n 22 i
.dbend
.dbfunc e main _main fV
; i -> R20
.even
_main::
sbiw R28,5
.dbline -1
.dbline 61
; }
;
; //------------------------------------------------------------------------------
; void main(void)
; {
.dbline 63
; unsigned char i;
; init_devices();
rcall _init_devices
.dbline 64
; LCD_INIT();
rcall _LCD_INIT
rjmp L21
L20:
.dbline 66
; while(1)
; {
.dbline 69
; //LCD_PRINT_240128(ouravr);
; //delay_nms(1000);
; LCD_CLEAR(0x00);
clr R16
rcall _LCD_CLEAR
.dbline 70
; delay_nms(500);
ldi R16,500
ldi R17,1
rcall _delay_nms
.dbline 71
; PRINT_words(0,0,"test for:中.文*测~试");
ldi R24,<L23
ldi R25,>L23
std y+1,R25
std y+0,R24
clr R18
clr R16
rcall _PRINT_words
.dbline 72
; delay_nms(500);
ldi R16,500
ldi R17,1
rcall _delay_nms
.dbline 73
; PRINT_words(11,2,"T6963C use ATMega88");
ldi R24,<L24
ldi R25,>L24
std y+1,R25
std y+0,R24
ldi R18,2
ldi R16,11
rcall _PRINT_words
.dbline 74
; delay_nms(500);
ldi R16,500
ldi R17,1
rcall _delay_nms
.dbline 75
; PRINT_words(2,4,"2007年5月27日-14点09分##秒");
ldi R24,<L25
ldi R25,>L25
std y+1,R25
std y+0,R24
ldi R18,4
ldi R16,2
rcall _PRINT_words
.dbline 76
; delay_nms(500);
ldi R16,500
ldi R17,1
rcall _delay_nms
.dbline 77
; PRINT_line(5,50,80,50,8); // 线1
ldi R24,8
std y+4,R24
ldi R24,50
std y+2,R24
ldi R24,80
std y+0,R24
ldi R18,50
ldi R16,5
rcall _PRINT_line
.dbline 78
; delay_nms(500);
ldi R16,500
ldi R17,1
rcall _delay_nms
.dbline 79
; PRINT_line(5,50,80,20,8); // 线2
ldi R24,8
std y+4,R24
ldi R24,20
std y+2,R24
ldi R24,80
std y+0,R24
ldi R18,50
ldi R16,5
rcall _PRINT_line
.dbline 80
; delay_nms(500);
ldi R16,500
ldi R17,1
rcall _delay_nms
.dbline 81
; PRINT_line(80,20,80,50,8); // 线3
ldi R24,8
std y+4,R24
ldi R24,50
std y+2,R24
ldi R24,80
std y+0,R24
ldi R18,20
ldi R16,80
rcall _PRINT_line
.dbline 82
; delay_nms(500);
ldi R16,500
ldi R17,1
rcall _delay_nms
.dbline 83
; for (i=120;i>0;i--)
ldi R20,120
rjmp L29
L26:
.dbline 84
.dbline 85
clr R2
std y+2,R2
mov R24,R20
subi R24,255 ; addi 1
std y+0,R24
ldi R18,64
ldi R16,120
rcall _PRINT_circle
.dbline 86
ldi R24,8
std y+2,R24
std y+0,R20
ldi R18,64
ldi R16,120
rcall _PRINT_circle
.dbline 87
ldi R24,8
std y+2,R24
mov R24,R20
subi R24,1
std y+0,R24
ldi R18,64
ldi R16,120
rcall _PRINT_circle
.dbline 88
L27:
.dbline 83
dec R20
L29:
.dbline 83
clr R2
cp R2,R20
brlo L26
.dbline 89
; {
; PRINT_circle(120,64,i+1,0); // 擦除外圆
; PRINT_circle(120,64,i,8);
; PRINT_circle(120,64,i-1,8);
; }
; for (i=5;i<64;i++)
ldi R20,5
rjmp L33
L30:
.dbline 90
.dbline 91
clr R2
std y+2,R2
mov R24,R20
subi R24,1
std y+0,R24
ldi R18,64
ldi R16,120
rcall _PRINT_circle
.dbline 92
ldi R24,8
std y+2,R24
std y+0,R20
ldi R18,64
ldi R16,120
rcall _PRINT_circle
.dbline 93
ldi R24,8
std y+2,R24
mov R24,R20
subi R24,255 ; addi 1
std y+0,R24
ldi R18,64
ldi R16,120
rcall _PRINT_circle
.dbline 94
ldi R16,50
ldi R17,0
rcall _delay_nms
.dbline 95
L31:
.dbline 89
inc R20
L33:
.dbline 89
cpi R20,64
brlo L30
.dbline 96
L21:
.dbline 65
rjmp L20
X0:
.dbline -2
L19:
adiw R28,5
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbend
.area data(ram, con, rel)
.dbfile D:\工作\240X12~1\(000)\TEST.C
L25:
.blkb 27
.area idata
.byte 50,48,48,55,196,234,53,212,194,50,55,200,213,45,49,52
.byte 181,227,48,57,183,214,35,35,195,235,0
.area data(ram, con, rel)
.dbfile D:\工作\240X12~1\(000)\TEST.C
L24:
.blkb 20
.area idata
.byte 'T,54,57,54,51,'C,32,'u,'s,'e,32,'A,'T,'M,'e,'g
.byte 'a,56,56,0
.area data(ram, con, rel)
.dbfile D:\工作\240X12~1\(000)\TEST.C
L23:
.blkb 21
.area idata
.byte 't,'e,'s,'t,32,'f,'o,'r,58,214,208,46,206,196,42,178
.byte 226,126,202,212,0
.area data(ram, con, rel)
.dbfile D:\工作\240X12~1\(000)\TEST.C
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -