📄 adc0832.lst
字号:
__text_start:
__start:
0018 E5CF LDI R28,0x5F
0019 E0D2 LDI R29,2
001A BFCD OUT 0x3D,R28
001B BFDE OUT 0x3E,R29
001C 51C0 SUBI R28,0x10
001D 40D0 SBCI R29,0
001E EA0A LDI R16,0xAA
001F 8308 STD Y+0,R16
0020 2400 CLR R0
0021 E6EE LDI R30,0x6E
0022 E0F0 LDI R31,0
0023 E010 LDI R17,0
0024 37E6 CPI R30,0x76
0025 07F1 CPC R31,R17
0026 F011 BEQ 0x0029
0027 9201 ST R0,Z+
0028 CFFB RJMP 0x0024
0029 8300 STD Z+0,R16
002A E2E2 LDI R30,0x22
002B E0F0 LDI R31,0
002C E6A0 LDI R26,0x60
002D E0B0 LDI R27,0
002E E010 LDI R17,0
002F 33E0 CPI R30,0x30
0030 07F1 CPC R31,R17
0031 F021 BEQ 0x0036
0032 95C8 LPM
0033 9631 ADIW R30,1
0034 920D ST R0,X+
0035 CFF9 RJMP 0x002F
0036 D081 RCALL _main
_exit:
0037 CFFF RJMP _exit
FILE: D:\AVR实验\adc0832_avr\adc0832.c
(0001) //adc0832相关程序
(0002) #include "adc0832.h"
(0003)
(0004)
(0005)
(0006) uchar read_adc(void)
(0007) {
(0008) uchar i,data1;
(0009) Clr_adc_cs;//bADcs = 0;
_read_adc:
data1 --> R16
i --> R18
0038 98C6 CBI 0x18,6
(0010) Clr_adc_clk;//bADcl=0;
0039 98C5 CBI 0x18,5
(0011) Set_adc_data;//bADda=1;
003A 9AC4 SBI 0x18,4
(0012) Set_adc_clk;//bADcl=1;
003B 9AC5 SBI 0x18,5
(0013) Clr_adc_clk;//bADcl=0;
003C 98C5 CBI 0x18,5
(0014) Set_adc_data;//bADda=1;
003D 9AC4 SBI 0x18,4
(0015) Set_adc_clk;// bADcl=1;
003E 9AC5 SBI 0x18,5
(0016) Clr_adc_clk;//bADcl=0;
003F 98C5 CBI 0x18,5
(0017) Clr_adc_data;//bADda=0;
0040 98C4 CBI 0x18,4
(0018) Set_adc_clk;//bADcl=1;
0041 9AC5 SBI 0x18,5
(0019) Clr_adc_clk;//bADcl=0;
0042 98C5 CBI 0x18,5
(0020) Set_adc_data;//bADda=1;
0043 9AC4 SBI 0x18,4
(0021) Set_adc_clk;//bADcl=1;
0044 9AC5 SBI 0x18,5
(0022) Clr_adc_clk;//bADcl=0;
0045 98C5 CBI 0x18,5
(0023) adc_data_in;
0046 98BC CBI 0x17,4
(0024) for(i=8;i>0;i--)
0047 E028 LDI R18,0x8
0048 C009 RJMP 0x0052
(0025) {
(0026) data1<<=1;
0049 0F00 LSL R16
(0027) Clr_adc_clk;//bADcl=0;
004A 98C5 CBI 0x18,5
(0028) asm("nop"); //延时很关键1us
004B 0000 NOP
(0029) Set_adc_clk;//bADcl=1;
004C 9AC5 SBI 0x18,5
(0030) asm("nop");
004D 0000 NOP
(0031) if(adc_read_data) data1|=0x01;
004E 9BB4 SBIS 0x16,4
004F C001 RJMP 0x0051
0050 6001 ORI R16,1
0051 952A DEC R18
0052 2422 CLR R2
0053 1622 CP R2,R18
0054 F3A0 BCS 0x0049
(0032) }
(0033) Set_adc_cs;// bADcs=1;
0055 9AC6 SBI 0x18,6
(0034) adc_data_out;
0056 9ABC SBI 0x17,4
(0035)
(0036) return data1;
0057 9508 RET
_returnvol:
data2 --> R10
0058 D11E RCALL push_gset3
(0037)
(0038) }
(0039)
(0040) uint returnvol(void)
(0041) {
(0042) uchar data2;
(0043) data2=((ulong)read_adc()*493)/256;
0059 DFDE RCALL _read_adc
005A 2E20 MOV R2,R16
005B 2433 CLR R3
005C 2444 CLR R4
005D 2455 CLR R5
005E EE4D LDI R20,0xED
005F E051 LDI R21,1
0060 E060 LDI R22,0
0061 E070 LDI R23,0
0062 925A ST R5,-Y
0063 924A ST R4,-Y
0064 923A ST R3,-Y
0065 922A ST R2,-Y
0066 018A MOVW R16,R20
0067 019B MOVW R18,R22
0068 D0DA RCALL empy32u
0069 E088 LDI R24,0x8
006A E090 LDI R25,0
006B 938A ST R24,-Y
006C D14A RCALL lsr32
006D 2EA0 MOV R10,R16
(0044)
(0045) return data2;
006E 2711 CLR R17
006F D0FF RCALL pop_gset3
0070 9508 RET
_update_display_dp:
byte_counter --> R20
bit_count --> R22
temp_i --> R10
k --> R12
0071 D103 RCALL push_gset4
0072 0168 MOVW R12,R16
FILE: D:\AVR实验\adc0832_avr\m4094.c
(0001) /*4094显示模式
(0002) 基于实验板接线方式
(0003) */
(0004) #include "d4094.h"
(0005)
(0006)
(0007) uchar table2[10]={0x81,0xB7,0xC2,0x92,0xB4,0x98,0x88,0xB3,0x80,0x90};
(0008) uchar led_buffer[4]={0,3};
(0009)
(0010) void update_display_dp(uint k)
(0011) {
(0012) uchar bit_count=0;
0073 2766 CLR R22
(0013) uchar byte_counter=0;
0074 2744 CLR R20
(0014) uchar temp_i=0;
0075 24AA CLR R10
(0015)
(0016) led_buffer[3]=k/1000;
0076 EE28 LDI R18,0xE8
0077 E033 LDI R19,3
0078 0186 MOVW R16,R12
0079 D09F RCALL div16u
007A 9300006D STS led_buffer+3,R16
(0017) led_buffer[2]=(k%1000)/100;
007C EE28 LDI R18,0xE8
007D E033 LDI R19,3
007E 0186 MOVW R16,R12
007F D097 RCALL mod16u
0080 E624 LDI R18,0x64
0081 E030 LDI R19,0
0082 D096 RCALL div16u
0083 9300006C STS led_buffer+2,R16
(0018) led_buffer[1]=(k%100)/10;
0085 E624 LDI R18,0x64
0086 E030 LDI R19,0
0087 0186 MOVW R16,R12
0088 D08E RCALL mod16u
0089 E02A LDI R18,0xA
008A E030 LDI R19,0
008B D08D RCALL div16u
008C 9300006B STS led_buffer+1,R16
(0019) led_buffer[0]=k%10;
008E E02A LDI R18,0xA
008F E030 LDI R19,0
0090 0186 MOVW R16,R12
0091 D085 RCALL mod16u
0092 9300006A STS led_buffer,R16
(0020)
(0021) CLR_STR_4094;//led_str_off;
0094 98AE CBI 0x15,6
(0022) CLR_CLK_4094;//led_clk_off;
0095 98AD CBI 0x15,5
(0023)
(0024) for(byte_counter=0;byte_counter<4;byte_counter++)
0096 C01C RJMP 0x00B3
(0025) {
(0026) bit_count=8;
0097 E068 LDI R22,0x8
(0027) temp_i=table2[led_buffer[byte_counter]];
0098 E68A LDI R24,0x6A
0099 E090 LDI R25,0
009A 2FE4 MOV R30,R20
009B 27FF CLR R31
009C 0FE8 ADD R30,R24
009D 1FF9 ADC R31,R25
009E 81E0 LDD R30,Z+0
009F 27FF CLR R31
00A0 E680 LDI R24,0x60
00A1 E090 LDI R25,0
00A2 0FE8 ADD R30,R24
00A3 1FF9 ADC R31,R25
00A4 80A0 LDD R10,Z+0
00A5 C009 RJMP 0x00AF
(0028)
(0029) while(bit_count>0)
(0030) {
(0031) if((temp_i&0x01)==0)
00A6 FCA0 SBRC R10,0
00A7 C002 RJMP 0x00AA
(0032) {
(0033) CLR_DATA_4094;//led_d_off;
00A8 98AC CBI 0x15,4
(0034) }
00A9 C001 RJMP 0x00AB
(0035) else
(0036) {
(0037) SET_DATA_4094;//led_d_on;
00AA 9AAC SBI 0x15,4
(0038) }
(0039) temp_i=(temp_i>>1);
00AB 94A6 LSR R10
(0040)
(0041)
(0042) SET_CLK_4094;//led_clk_on;
00AC 9AAD SBI 0x15,5
(0043)
(0044) CLR_CLK_4094;//led_clk_off;
00AD 98AD CBI 0x15,5
(0045)
(0046) bit_count--;
00AE 956A DEC R22
00AF 2422 CLR R2
00B0 1626 CP R2,R22
00B1 F3A0 BCS 0x00A6
00B2 9543 INC R20
00B3 3044 CPI R20,4
00B4 F310 BCS 0x0097
(0047)
(0048) }
(0049)
(0050) }
(0051) SET_STR_4094;
00B5 9AAE SBI 0x15,6
00B6 D0BA RCALL pop_gset4
00B7 9508 RET
FILE: D:\AVR实验\adc0832_avr\main_adc0832.c
(0001) #include <iom8515v.h>
(0002) #include <macros.h>
(0003)
(0004) #define uchar unsigned char
(0005) #define uint unsigned int
(0006)
(0007) uint num0,num1,num2,num;
(0008)
(0009) main()
(0010) {
(0011) DDRB=0xFF;
_main:
00B8 EF8F LDI R24,0xFF
00B9 BB87 OUT 0x17,R24
(0012) PORTB=0xFF;
00BA BB88 OUT 0x18,R24
(0013) DDRC=0xFF;
00BB BB84 OUT 0x14,R24
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -