?? main.s
字號:
.module main.c
.area text(rom, con, rel)
.dbfile D:\各種模塊設計\模塊程序集\ad7705/delay.h
.dbfunc e delay_1us _delay_1us fV
.even
_delay_1us::
.dbline -1
.dbline 6
; #include <iom128v.h>
; #include<macros.h>
; #include "delay.h"
; #include "7705.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
; /****************************************************************************/
; //功能: AD7705使用
; //輸入: 無
; //輸出: 無
.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
; /***************************全局變量聲明*************************************/
; uint vol16bit=0;
; uchar test1[]=" AD7705TEST ";
; uint 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
; uchar flag=0;
;
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
; //void int0_isr(void);
; /****************************************************************************/
; //函數名: ad7705()
; //功能: 實現模數轉換
.dbline 25
; //輸入: chan(通道)
clr R20
clr R21
.dbline 26
; //輸出: adc16(經ADC轉換后的16位2進制數)
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 D:\各種模塊設計\模塊程序集\ad7705/7705.h
.dbfunc e init_adc7705 _init_adc7705 fV
; i -> R20
.even
_init_adc7705::
xcall push_gset1
.dbline -1
.dbline 32
; //備注:
; /****************************************************************************/
; //unsigned int ad7705(unsigned char chan)
; //{ unsigned int adc16=0;
; //init_adc7705();
; //adc16=read_adc7705(0);
.dbline 34
; //return(adc16);
; //}
lds R24,98
ori R24,1
sts 98,R24
.dbline 35
; /****************************************************************************/
lds R24,98
ori R24,2
sts 98,R24
.dbline 36
; //函數名: main(void)
clr R20
xjmp L21
L18:
.dbline 37
.dbline 37
lds R24,98
andi R24,254
sts 98,R24
.dbline 37
lds R24,98
ori R24,1
sts 98,R24
.dbline 37
L19:
.dbline 36
inc R20
L21:
.dbline 36
cpi R20,40
brlo L18
.dbline 38
; //功能: 主函數
; //輸入: 無
ldi R16,32
xcall _write_adc7705
.dbline 39
; //輸出: 無
ldi R16,6
xcall _write_adc7705
.dbline 40
; //備注:
ldi R16,16
xcall _write_adc7705
.dbline 41
; /****************************************************************************/
ldi R16,68
xcall _write_adc7705
.dbline 42
; void main(void)
ldi R16,100
ldi R17,0
xcall _delay_nms
.dbline -2
L17:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbend
.dbfunc e write_adc7705 _write_adc7705 fV
; cmd -> R20
; i -> R22
; token -> R10
; cmd_data -> R22
.even
_write_adc7705::
xcall push_gset3
mov R22,R16
.dbline -1
.dbline 52
; {
; uchar tongdao=0x00;
; uchar key_vale;
;
; DDRF=0xF3;
; PORTF=0xFF;
; DDRD=0xf7; //PD0為輸入,與鍵盤的所有行線連接,采用鍵盤中斷查詢法
; MCUCR=0x30; //打開SE和SM1,允許sleep和power_down模式
; EIMSK=0x01; //允許外部中斷INT0,低電平觸發中斷
; LCD_init();
.dbline 54
; LCD_DisplayString(1,1,test1);
;
ldi R24,128
mov R10,R24
.dbline 54
mov R20,R22
.dbline 55
; while(1)
lds R24,98
ori R24,1
sts 98,R24
.dbline 56
; {
clr R22
xjmp L26
L23:
.dbline 57
; CLI();
.dbline 58
; SEI();
lds R24,98
andi R24,254
sts 98,R24
.dbline 59
; asm("sleep"); //進入sleep模式
ldi R16,2
ldi R17,0
xcall _delay_nus
.dbline 60
;
mov R2,R20
and R2,R10
breq L27
.dbline 60
lds R24,98
ori R24,2
sts 98,R24
xjmp L28
L27:
.dbline 61
; if(flag=1)
lds R24,98
andi R24,253
sts 98,R24
L28:
.dbline 62
ldi R16,2
ldi R17,0
xcall _delay_nus
.dbline 63
lds R24,98
ori R24,1
sts 98,R24
.dbline 64
ldi R16,5
ldi R17,0
xcall _delay_nus
.dbline 65
lsr R10
.dbline 66
L24:
.dbline 56
inc R22
L26:
.dbline 56
cpi R22,8
brlo L23
.dbline 67
; {
; key_vale=key_scay();
;
; if(key_vale==10)
; {
; vol16bit=ad7705(tongdao);
lds R24,98
ori R24,1
sts 98,R24
.dbline 67
lds R24,98
ori R24,2
sts 98,R24
.dbline -2
L22:
xcall pop_gset3
.dbline 0 ; func end
ret
.dbsym r cmd 20 c
.dbsym r i 22 c
.dbsym r token 10 c
.dbsym r cmd_data 22 c
.dbend
.dbfunc e read_adc7705 _read_adc7705 fi
; token -> <dead>
; i -> R20
; ad16bit -> R22,R23
; channel -> R20
.even
_read_adc7705::
xcall push_gset2
mov R20,R16
.dbline -1
.dbline 77
; voltemp=(vol16bit/65535.0)*2500;
; vint=(int)voltemp;
; LCD_DisplayInt(2,5,vint);
; delay_nms(1);
; }
; }
; }
;
; }
;
.dbline 80
;
; //功能:鍵盤中斷掃描程序,外部0中斷
; #pragma interrupt_handler int0_isr:2
mov R16,R20
ori R16,56
xcall _write_adc7705
L30:
.dbline 81
.dbline 81
.dbline 81
L31:
.dbline 81
; void int0_isr(void)
sbic 0x0,3
rjmp L30
.dbline 82
; {
lds R24,98
ori R24,1
sts 98,R24
.dbline 83
; EIMSK=0x00; //禁止外部中斷
clr R22
clr R23
.dbline 84
; flag=1;
clr R20
xjmp L36
L33:
.dbline 85
; EIMSK=0x01; //允許外部中斷
.dbline 85
lsl R22
rol R23
.dbline 86
; }
lds R24,98
andi R24,254
sts 98,R24
.dbline 87
;
ldi R16,2
ldi R17,0
xcall _delay_nus
.dbline 88
;
sbis 0x0,2
rjmp L37
.dbline 88
ori R22,1
L37:
.dbline 89
ldi R16,2
ldi R17,0
xcall _delay_nus
.dbline 90
lds R24,98
ori R24,1
sts 98,R24
.dbline 91
ldi R16,5
ldi R17,0
xcall _delay_nus
.dbline 92
L34:
.dbline 84
inc R20
L36:
.dbline 84
cpi R20,16
brlo L33
.dbline 93
;
;
;
;
;
lds R24,98
ori R24,1
sts 98,R24
.dbline 93
lds R24,98
ori R24,2
sts 98,R24
.dbline 94
;
movw R16,R22
.dbline -2
L29:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym l token 1 i
.dbsym r i 20 c
.dbsym r ad16bit 22 i
.dbsym r channel 20 c
.dbend
.dbfunc e ad7705 _ad7705 fi
; adc16 -> R20,R21
; count -> R22
; temp -> R14,R15
; j -> R10
; value_buf -> y+0
; i -> R12
; chan -> R22
.even
_ad7705::
xcall push_gset5
mov R22,R16
sbiw R28,14
.dbline -1
.dbline 104
;
;
;
;
;
;
;
;
;
;
.dbline 105
;
clr R20
clr R21
.dbline 108
;
;
;
clr R22
xjmp L43
L40:
.dbline 109
.dbline 110
xcall _init_adc7705
.dbline 111
clr R16
xcall _read_adc7705
movw R20,R16
.dbline 112
ldi R24,2
mul R24,R22
movw R30,R0
movw R24,R28
add R30,R24
adc R31,R25
std z+1,R21
std z+0,R20
.dbline 113
L41:
.dbline 108
inc R22
L43:
.dbline 108
cpi R22,7
brlo L40
.dbline 115
;
;
;
;
;
;
;
clr R10
xjmp L47
L44:
.dbline 116
;
.dbline 117
;
clr R12
xjmp L51
L48:
.dbline 118
;
.dbline 119
;
ldi R24,2
mul R24,R12
movw R24,R28
adiw R24,2
movw R30,R0
add R30,R24
adc R31,R25
ldd R2,z+0
ldd R3,z+1
movw R24,R28
movw R30,R0
add R30,R24
adc R31,R25
ldd R4,z+0
ldd R5,z+1
cp R2,R4
cpc R3,R5
brsh L52
.dbline 120
;
.dbline 121
;
ldi R24,2
mul R24,R12
movw R30,R0
movw R24,R28
add R30,R24
adc R31,R25
ldd R14,z+0
ldd R15,z+1
.dbline 122
;
ldi R24,2
mul R24,R12
movw R24,R28
adiw R24,2
movw R30,R0
add R30,R24
adc R31,R25
ldd R2,z+0
ldd R3,z+1
movw R24,R28
movw R30,R0
add R30,R24
adc R31,R25
std z+1,R3
std z+0,R2
.dbline 123
;
ldi R24,2
mul R24,R12
movw R30,R0
movw R24,R28
adiw R24,2
add R30,R24
adc R31,R25
std z+1,R15
std z+0,R14
.dbline 124
;
L52:
.dbline 125
L49:
.dbline 117
inc R12
L51:
.dbline 117
ldi R24,7
sub R24,R10
cp R12,R24
brsh X0
xjmp L48
X0:
.dbline 126
L45:
.dbline 115
inc R10
L47:
.dbline 115
mov R24,R10
cpi R24,6
brsh X1
xjmp L44
X1:
.dbline 127
;
;
;
ldd R16,y+6
ldd R17,y+7
.dbline -2
L39:
adiw R28,14
xcall pop_gset5
.dbline 0 ; func end
ret
.dbsym r adc16 20 i
.dbsym r count 22 c
.dbsym r temp 14 i
.dbsym r j 10 c
.dbsym l value_buf 0 A[14:7]i
.dbsym r i 12 c
.dbsym r chan 22 c
.dbend
.dbfile D:\各種模塊設計\模塊程序集\ad7705/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 L59
.dbline 14
clr R20
xjmp L60
L59:
.dbline 15
sbis 0x19,2
rjmp L61
.dbline 16
ldi R20,4
xjmp L62
L61:
.dbline 17
sbis 0x19,1
rjmp L63
.dbline 18
ldi R20,8
xjmp L64
L63:
.dbline 19
sbis 0x19,0
rjmp L65
.dbline 20
ldi R20,12
L65:
L64:
L62:
L60:
.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 L67
.dbline 26
xjmp L68
L67:
.dbline 27
sbis 0x19,6
rjmp L69
.dbline 28
inc R20
xjmp L70
L69:
.dbline 29
sbis 0x19,5
rjmp L71
.dbline 30
subi R20,254 ; addi 2
xjmp L72
L71:
.dbline 31
sbis 0x19,4
rjmp L73
.dbline 32
subi R20,253 ; addi 3
L73:
L72:
L70:
L68:
.dbline 33
ldi R24,240
out 0x17,R24
.dbline 34
ldi R24,15
out 0x18,R24
.dbline 35
mov R16,R20
.dbline -2
L58:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r key 20 c
.dbend
.dbfile D:\各種模塊設計\模塊程序集\ad7705/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
L75:
.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
L76:
.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 L78
.dbline 63
cbi 0x1b,1
xjmp L79
L78:
.dbline 65
in R24,0x1b
andi R24,2
out 0x1b,R24
L79:
.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
L77:
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
L80:
.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 L82
.dbline 95
mov R20,R22
subi R20,128 ; addi 128
xjmp L83
L82:
.dbline 97
mov R20,R22
subi R20,112 ; addi 144
L83:
.dbline 98
mov R18,R20
ldi R16,1
xcall _LCD_Write_char
.dbline 99
.dbline -2
L81:
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
L84:
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
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -