📄 max531.s
字号:
.module max531.c
.area text(rom, con, rel)
.dbfile C:\icc\project\cs5532\max531.c
.dbfunc s DAtrans _DAtrans fI
; max_i -> R20
; max_temp -> R22
; DA_data -> R10
.even
_DAtrans::
rcall push_gset3
mov R10,R16
.dbline -1
.dbline 13
; #include<io8515.h>
; //*************************************
; //PD3-MAX_CS PD4-MAX_SCLK PD5-MAX_DIN
; //*************************************
; #define MAX_CS 0b00001000
; #define MAX_SCLK 0b00010000
; #define MAX_DIN 0b00100000
; #define MAX_DDR DDRD
; #define MAX_ALL 0b00111000
; #define MAX_POART PORTD
; //*************************************
; void DAtrans(unsigned char DA_data)
; {
.dbline 16
;
; unsigned char max_temp,max_i;
; max_i=8;
ldi R20,8
rjmp L3
L2:
.dbline 18
; while(max_i)
; {
.dbline 19
; max_temp=DA_data;
mov R22,R10
.dbline 20
; max_temp=max_temp>>(max_i-1);
mov R17,R20
subi R17,1
mov R16,R22
rcall lsr8
mov R22,R16
.dbline 21
; max_temp=max_temp&0b00000001;
andi R22,1
.dbline 22
; MAX_POART=MAX_POART&~MAX_SCLK;
cbi 0x12,4
.dbline 23
; if(max_temp)
tst R22
breq L5
.dbline 24
; {
.dbline 25
; MAX_POART=MAX_POART|MAX_DIN;
sbi 0x12,5
.dbline 26
; MAX_POART=MAX_POART|MAX_SCLK;
sbi 0x12,4
.dbline 27
; }
rjmp L6
L5:
.dbline 29
; else
; {
.dbline 30
; MAX_POART=MAX_POART&~MAX_DIN;
cbi 0x12,5
.dbline 31
; MAX_POART=MAX_POART|MAX_SCLK;
sbi 0x12,4
.dbline 33
;
; }
L6:
.dbline 35
dec R20
.dbline 36
L3:
.dbline 17
tst R20
brne L2
.dbline -2
.dbline 38
;
; max_i--;
; }
;
; }
L1:
rcall pop_gset3
.dbline 0 ; func end
ret
.dbsym r max_i 20 c
.dbsym r max_temp 22 c
.dbsym r DA_data 10 c
.dbfunc s DAconvter _DAconvter fI
; DA_low -> R20
; DA_hight -> R22
.even
_DAconvter::
rcall push_gset2
mov R20,R18
mov R22,R16
.dbline -1
.dbline 41
; //******************************************************
; void DAconvter(unsigned char DA_hight,unsigned char DA_low)
; {
.dbline 42
; DDRD=DDRD|MAX_ALL;
in R24,0x11
ori R24,56
out 0x11,R24
.dbline 43
; MAX_POART=MAX_POART&~MAX_CS;//cs=0
cbi 0x12,3
.dbline 44
; DAtrans(DA_hight);
mov R16,R22
rcall _DAtrans
.dbline 45
; DAtrans(DA_low);
mov R16,R20
rcall _DAtrans
.dbline 46
; MAX_POART=MAX_POART|MAX_CS;//cs=1
sbi 0x12,3
.dbline -2
.dbline 47
; }
L7:
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r DA_low 20 c
.dbsym r DA_hight 22 c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -