📄 main.s
字号:
.module main.c
.area text(rom, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\ad2543/delay.h
.dbfunc e delay_1us _delay_1us fV
.even
_delay_1us::
.dbline -1
.dbline 6
; #include <iom128v.h>
; #include "delay.h"
; #include "ad2543.h"
; #include "KeyScay.h"
; #include "lcd.h"
;
.dbline 7
; /****************************************************************************/
nop
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbend
.dbfunc e delay_nus _delay_nus fV
; i -> R20,R21
; n -> R22,R23
.even
_delay_nus::
xcall push_gset2
movw R22,R16
.dbline -1
.dbline 11
; //功能: AD2543使用
; //输入: 无
; //输出: 无
; //备注:
.dbline 12
; /****************************************************************************/
clr R20
clr R21
.dbline 13
; /***************************全局变量声明*************************************/
xjmp L6
L3:
.dbline 14
xcall _delay_1us
L4:
.dbline 13
subi R20,255 ; offset = 1
sbci R21,255
L6:
.dbline 13
cp R20,R22
cpc R21,R23
brlo L3
.dbline -2
L2:
xcall 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 -> R16,R17
.even
_delay_1ms::
.dbline -1
.dbline 18
; unsigned int vol16bit=0;
; unsigned char test1[]=" AD2543TEST ";
; unsigned int vint=0;
; float voltemp=0;
;
.dbline 20
clr R16
clr R17
xjmp L11
L8:
.dbline 20
L9:
.dbline 20
subi R16,255 ; offset = 1
sbci R17,255
L11:
.dbline 20
;
; /****************************************************************************/
cpi R16,118
ldi R30,4
cpc R17,R30
brlo L8
.dbline -2
L7:
.dbline 0 ; func end
ret
.dbsym r i 16 i
.dbend
.dbfunc e delay_nms _delay_nms fV
; i -> R20,R21
; n -> R22,R23
.even
_delay_nms::
xcall push_gset2
movw R22,R16
.dbline -1
.dbline 24
; //函数名: ad2543()
; //功能: 实现模数转换
; //输入:
; //输出: adc16(经ADC转换后的12位2进制数)
.dbline 25
; //备注:
clr R20
clr R21
.dbline 26
; /****************************************************************************/
xjmp L16
L13:
.dbline 27
.dbline 28
xcall _delay_1ms
.dbline 29
L14:
.dbline 26
subi R20,255 ; offset = 1
sbci R21,255
L16:
.dbline 26
cp R20,R22
cpc R21,R23
brlo L13
.dbline -2
L12:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r i 20 i
.dbsym r n 22 i
.dbend
.dbfile C:\DOCUME~1\Administrator\桌面\ad2543/ad2543.h
.dbfunc e init_ad2543 _init_ad2543 fV
.even
_init_ad2543::
.dbline -1
.dbline 35
; unsigned int ad2543(void)
; {
; unsigned int adc16;
; init_ad2543();
; adc16=read_ad2543();
; return(adc16);
; }
; /****************************************************************************/
; //函数名: main(void)
.dbline 36
; //功能: 主函数
ldi R16,42752
ldi R17,167
xcall _write_ad2543
.dbline -2
L17:
.dbline 0 ; func end
ret
.dbend
.dbfunc e write_ad2543 _write_ad2543 fV
; cmd -> R20,R21
; i -> R22
; token -> R10,R11
; command -> R22,R23
.even
_write_ad2543::
xcall push_gset3
movw R22,R16
.dbline -1
.dbline 43
; //输入: 无
; //输出: 无
; //备注:
; /****************************************************************************/
; void main(void)
; {
; DDRD=0X3F;
.dbline 44
; PORTD=0xFF;
ldi R24,32768
ldi R25,128
movw R10,R24
.dbline 46
; LCD_init();
; LCD_DisplayString(1,1,test1);
movw R20,R22
.dbline 47
; while(1)
sbi 0x1b,0
.dbline 48
; {
cbi 0x1b,0
.dbline 49
; vol16bit=ad2543();
cbi 0x1b,2
.dbline 50
; voltemp=(vol16bit/4096.0)*5000;
ldi R16,2
ldi R17,0
xcall _delay_nus
.dbline 51
; vint=(int)voltemp;
clr R22
xjmp L22
L19:
.dbline 52
; LCD_DisplayInt(2,5,vint);
.dbline 54
; delay_nms(1);
;
movw R2,R20
and R2,R10
and R3,R11
tst R2
brne X0
tst R3
breq L23
X0:
.dbline 55
; }
sbi 0x1b,1
xjmp L24
L23:
.dbline 57
;
; }
cbi 0x1b,1
L24:
.dbline 58
sbi 0x1b,2
.dbline 59
xcall _delay_1us
.dbline 60
cbi 0x1b,2
.dbline 61
lsr R11
ror R10
.dbline 62
L20:
.dbline 51
inc R22
L22:
.dbline 51
cpi R22,16
brlo L19
.dbline 63
; }
; }
; }
; }
; }
; }
ldi R16,2
ldi R17,0
xcall _delay_nus
.dbline -2
L18:
xcall pop_gset3
.dbline 0 ; func end
ret
.dbsym r cmd 20 i
.dbsym r i 22 c
.dbsym r token 10 i
.dbsym r command 22 i
.dbend
.dbfunc e read_ad2543 _read_ad2543 fi
; i -> R20
; ad16bit -> R22,R23
.even
_read_ad2543::
xcall push_gset2
.dbline -1
.dbline 68
; }
; }
; }
; }
; }
.dbline 69
; }
clr R22
clr R23
L26:
.dbline 71
.dbline 71
.dbline 71
L27:
.dbline 71
; }
; }
sbic 0x19,4
rjmp L26
.dbline 72
; }
clr R20
xjmp L32
L29:
.dbline 73
; }
.dbline 74
; }
sbis 0x19,3
rjmp L33
.dbline 74
ori R22,1
L33:
.dbline 75
sbi 0x1b,2
.dbline 76
xcall _delay_1us
.dbline 77
cbi 0x1b,2
.dbline 78
lsl R22
rol R23
.dbline 79
L30:
.dbline 72
inc R20
L32:
.dbline 72
cpi R20,16
brlo L29
.dbline 80
; }
; }
; }
; }
; }
; }
movw R16,R22
.dbline -2
L25:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym r ad16bit 22 i
.dbend
.dbfile C:\DOCUME~1\Administrator\桌面\ad2543/KeyScay.h
.dbfunc e key_scay _key_scay fc
; key -> R20
.even
_key_scay::
xcall push_gset1
.dbline -1
.dbline 8
.dbline 10
ldi R24,240
out 0x17,R24
.dbline 11
ldi R24,15
out 0x18,R24
.dbline 13
sbis 0x19,3
rjmp L36
.dbline 14
clr R20
xjmp L37
L36:
.dbline 15
sbis 0x19,2
rjmp L38
.dbline 16
ldi R20,4
xjmp L39
L38:
.dbline 17
sbis 0x19,1
rjmp L40
.dbline 18
ldi R20,8
xjmp L41
L40:
.dbline 19
sbis 0x19,0
rjmp L42
.dbline 20
ldi R20,12
L42:
L41:
L39:
L37:
.dbline 21
ldi R24,15
out 0x17,R24
.dbline 22
ldi R24,240
out 0x18,R24
.dbline 23
ldi R16,20
ldi R17,0
xcall _delay_nms
.dbline 25
sbis 0x19,7
rjmp L44
.dbline 26
xjmp L45
L44:
.dbline 27
sbis 0x19,6
rjmp L46
.dbline 28
inc R20
xjmp L47
L46:
.dbline 29
sbis 0x19,5
rjmp L48
.dbline 30
subi R20,254 ; addi 2
xjmp L49
L48:
.dbline 31
sbis 0x19,4
rjmp L50
.dbline 32
subi R20,253 ; addi 3
L50:
L49:
L47:
L45:
.dbline 33
ldi R24,240
out 0x17,R24
.dbline 34
ldi R24,15
out 0x18,R24
.dbline 35
mov R16,R20
.dbline -2
L35:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r key 20 c
.dbend
.dbfile C:\DOCUME~1\Administrator\桌面\ad2543/lcd.h
.dbfunc e LCD_init _LCD_init fV
.even
_LCD_init::
.dbline -1
.dbline 39
.dbline 40
in R24,0x1a
ori R24,240
out 0x1a,R24
.dbline 41
sbi 0x1a,3
.dbline 42
sbi 0x1a,1
.dbline 43
ldi R18,40
ldi R16,1
xcall _LCD_Write_char
.dbline 44
xcall _LCD_en_write
.dbline 45
ldi R16,40
ldi R17,0
xcall _delay_nus
.dbline 46
ldi R18,40
ldi R16,1
xcall _LCD_Write_char
.dbline 47
ldi R18,12
ldi R16,1
xcall _LCD_Write_char
.dbline 48
ldi R18,1
ldi R16,1
xcall _LCD_Write_char
.dbline 49
ldi R16,2
ldi R17,0
xcall _delay_nms
.dbline -2
L52:
.dbline 0 ; func end
ret
.dbend
.dbfunc e LCD_en_write _LCD_en_write fV
.even
_LCD_en_write::
.dbline -1
.dbline 53
.dbline 54
sbi 0x1b,3
.dbline 55
ldi R16,1
ldi R17,0
xcall _delay_nus
.dbline 56
cbi 0x1b,3
.dbline -2
L53:
.dbline 0 ; func end
ret
.dbend
.dbfunc e LCD_Write_char _LCD_Write_char fV
; data -> R20
; command -> R22
.even
_LCD_Write_char::
xcall push_gset2
mov R20,R18
mov R22,R16
.dbline -1
.dbline 60
.dbline 61
ldi R16,16
ldi R17,0
xcall _delay_nus
.dbline 62
cpi R22,1
brne L55
.dbline 63
cbi 0x1b,1
xjmp L56
L55:
.dbline 65
in R24,0x1b
andi R24,2
out 0x1b,R24
L56:
.dbline 67
in R24,0x1b
andi R24,15
out 0x1b,R24
.dbline 68
mov R24,R20
andi R24,240
in R2,0x1b
or R2,R24
out 0x1b,R2
.dbline 69
xcall _LCD_en_write
.dbline 70
mov R24,R20
andi R24,#0x0F
swap R24
mov R20,R24
.dbline 71
in R24,0x1b
andi R24,15
out 0x1b,R24
.dbline 72
mov R24,R20
andi R24,240
in R2,0x1b
or R2,R24
out 0x1b,R2
.dbline 73
xcall _LCD_en_write
.dbline -2
L54:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r data 20 c
.dbsym r command 22 c
.dbend
.dbfunc e LCD_Clear _LCD_Clear fV
.even
_LCD_Clear::
.dbline -1
.dbline 80
.dbline 81
; }
ldi R18,1
ldi R16,1
xcall _LCD_Write_char
.dbline -2
L57:
.dbline 0 ; func end
ret
.dbend
.dbfunc e LCD_set_xy _LCD_set_xy fV
; address -> R20
; y -> R20
; x -> R22
.even
_LCD_set_xy::
xcall push_gset2
mov R20,R18
mov R22,R16
.dbline -1
.dbline 91
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
.dbline 93
; }
; }
.dbline 94
; }
tst R20
brne L59
.dbline 95
; }
mov R20,R22
subi R20,128 ; addi 128
xjmp L60
L59:
.dbline 97
; }
; }
mov R20,R22
subi R20,112 ; addi 144
L60:
.dbline 98
; }
mov R18,R20
ldi R16,1
xcall _LCD_Write_char
.dbline 99
; }
.dbline -2
L58:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r address 20 c
.dbsym r y 20 c
.dbsym r x 22 c
.dbend
.dbfunc e LCD_DisplayCharacter _LCD_DisplayCharacter fV
; Char -> R20
.even
_LCD_DisplayCharacter::
xcall push_gset1
mov R20,R16
.dbline -1
.dbline 109
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
.dbline 110
; }
mov R18,R20
clr R16
xcall _LCD_Write_char
.dbline -2
L61:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r Char 20 c
.dbend
.dbfunc e LCD_DisplayString _LCD_DisplayString fV
; string -> R20,R21
; y -> R10
; x -> R22
.even
_LCD_DisplayString::
xcall push_gset3
mov R10,R18
mov R22,R16
ldd R20,y+6
ldd R21,y+7
.dbline -1
.dbline 120
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
.dbline 121
; }
mov R18,R10
mov R16,R22
xcall _LCD_set_xy
xjmp L64
L63:
.dbline 123
movw R30,R20
ld R16,Z+
movw R20,R30
xcall _LCD_DisplayCharacter
L64:
.dbline 122
; }
movw R30,R20
ldd R2,z+0
tst R2
brne L63
.dbline -2
L62:
xcall pop_gset3
.dbline 0 ; func end
ret
.dbsym r string 20 pc
.dbsym r y 10 c
.dbsym r x 22 c
.dbend
.dbfunc e LCD_DisplayInt _LCD_DisplayInt fV
; n -> R22
; j -> R22
; str -> R10,R11
; a -> y+2
; i -> R20
; t -> R20,R21
; y -> R14
; x -> R12
.even
_LCD_DisplayInt::
xcall push_gset5
mov R14,R18
mov R12,R16
sbiw R28,7
ldd R20,y+17
ldd R21,y+18
.dbline -1
.dbline 134
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
.dbline 137
; }
; }
; }
ldi R24,<_ch1
ldi R25,>_ch1
movw R10,R24
.dbline 138
; }
ldi R18,10000
ldi R19,39
movw R16,R20
xcall div16u
ldi R18,10
ldi R19,0
xcall mod16u
std y+2,R16
.dbline 139
; }
ldi R18,1000
ldi R19,3
movw R16,R20
xcall div16u
ldi R18,10
ldi R19,0
xcall mod16u
std y+3,R16
.dbline 140
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -