📄 max531.lis
字号:
.module max531.c
.area text(rom, con, rel)
0000 .dbfile C:\icc\project\cs5532\max531.c
0000 .dbfunc s DAtrans _DAtrans fI
; max_i -> R20
; max_temp -> R22
; DA_data -> R10
.even
0000 _DAtrans::
0000 00D0 rcall push_gset3
0002 A02E mov R10,R16
0004 .dbline -1
0004 .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)
; {
0004 .dbline 16
;
; unsigned char max_temp,max_i;
; max_i=8;
0004 48E0 ldi R20,8
0006 10C0 rjmp L3
0008 L2:
0008 .dbline 18
; while(max_i)
; {
0008 .dbline 19
; max_temp=DA_data;
0008 6A2D mov R22,R10
000A .dbline 20
; max_temp=max_temp>>(max_i-1);
000A 142F mov R17,R20
000C 1150 subi R17,1
000E 062F mov R16,R22
0010 00D0 rcall lsr8
0012 602F mov R22,R16
0014 .dbline 21
; max_temp=max_temp&0b00000001;
0014 6170 andi R22,1
0016 .dbline 22
; MAX_POART=MAX_POART&~MAX_SCLK;
0016 9498 cbi 0x12,4
0018 .dbline 23
; if(max_temp)
0018 6623 tst R22
001A 19F0 breq L5
001C .dbline 24
; {
001C .dbline 25
; MAX_POART=MAX_POART|MAX_DIN;
001C 959A sbi 0x12,5
001E .dbline 26
; MAX_POART=MAX_POART|MAX_SCLK;
001E 949A sbi 0x12,4
0020 .dbline 27
; }
0020 02C0 rjmp L6
0022 L5:
0022 .dbline 29
; else
; {
0022 .dbline 30
; MAX_POART=MAX_POART&~MAX_DIN;
0022 9598 cbi 0x12,5
0024 .dbline 31
; MAX_POART=MAX_POART|MAX_SCLK;
0024 949A sbi 0x12,4
0026 .dbline 33
;
; }
0026 L6:
0026 .dbline 35
0026 4A95 dec R20
0028 .dbline 36
0028 L3:
0028 .dbline 17
0028 4423 tst R20
002A 71F7 brne L2
002C .dbline -2
002C .dbline 38
;
; max_i--;
; }
;
; }
002C L1:
002C 00D0 rcall pop_gset3
002E .dbline 0 ; func end
002E 0895 ret
0030 .dbsym r max_i 20 c
0030 .dbsym r max_temp 22 c
0030 .dbsym r DA_data 10 c
0030 .dbfunc s DAconvter _DAconvter fI
; DA_low -> R20
; DA_hight -> R22
.even
0030 _DAconvter::
0030 00D0 rcall push_gset2
0032 422F mov R20,R18
0034 602F mov R22,R16
0036 .dbline -1
0036 .dbline 41
; //******************************************************
; void DAconvter(unsigned char DA_hight,unsigned char DA_low)
; {
0036 .dbline 42
; DDRD=DDRD|MAX_ALL;
0036 81B3 in R24,0x11
0038 8863 ori R24,56
003A 81BB out 0x11,R24
003C .dbline 43
; MAX_POART=MAX_POART&~MAX_CS;//cs=0
003C 9398 cbi 0x12,3
003E .dbline 44
; DAtrans(DA_hight);
003E 062F mov R16,R22
0040 DFDF rcall _DAtrans
0042 .dbline 45
; DAtrans(DA_low);
0042 042F mov R16,R20
0044 DDDF rcall _DAtrans
0046 .dbline 46
; MAX_POART=MAX_POART|MAX_CS;//cs=1
0046 939A sbi 0x12,3
0048 .dbline -2
0048 .dbline 47
; }
0048 L7:
0048 00D0 rcall pop_gset2
004A .dbline 0 ; func end
004A 0895 ret
004C .dbsym r DA_low 20 c
004C .dbsym r DA_hight 22 c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -