📄 1.lst
字号:
__text_start:
__start:
002A E5CF LDI R28,0x5F
002B E0D4 LDI R29,4
002C BFCD OUT 0x3D,R28
002D BFDE OUT 0x3E,R29
002E 51C0 SUBI R28,0x10
002F 40D0 SBCI R29,0
0030 EA0A LDI R16,0xAA
0031 8308 STD Y+0,R16
0032 2400 CLR R0
0033 E6E0 LDI R30,0x60
0034 E0F0 LDI R31,0
0035 E010 LDI R17,0
0036 36E1 CPI R30,0x61
0037 07F1 CPC R31,R17
0038 F011 BEQ 0x003B
0039 9201 ST R0,Z+
003A CFFB RJMP 0x0036
003B 8300 STD Z+0,R16
003C E5E4 LDI R30,0x54
003D E0F0 LDI R31,0
003E E6A0 LDI R26,0x60
003F E0B0 LDI R27,0
0040 E010 LDI R17,0
0041 35E4 CPI R30,0x54
0042 07F1 CPC R31,R17
0043 F021 BEQ 0x0048
0044 95C8 LPM
0045 9631 ADIW R30,1
0046 920D ST R0,X+
0047 CFF9 RJMP 0x0041
0048 940E00C7 CALL _main
_exit:
004A CFFF RJMP _exit
FILE: H:\bbi项目源程序\18b20温度传感器\LED显示18B20\bc7281.h
(0001)
(0002) #define uchar unsigned char
(0003) #define clk1 PORTA|=BIT(7)
(0004) #define clk0 PORTA&=~BIT(7)
(0005) #define clkout DDRA|=BIT(7)
(0006) #define clkin DDRA&=~BIT(7)
(0007) #define data1 PORTA|=BIT(6)
(0008) #define data0 PORTA&=~BIT(6)
(0009) #define dataout DDRA|=BIT(6)
(0010) #define datain DDRA&=~BIT(6)
(0011) unsigned char key_number;
(0012)
(0013) ////**********************延时*************************//////
(0014) void delay(unsigned int time)
(0015) {
_delay:
time --> R16
004B C001 RJMP 0x004D
(0016) while(time--)
(0017) asm("nop");
004C 0000 NOP
004D 0118 MOVW R2,R16
004E 5001 SUBI R16,1
004F 4010 SBCI R17,0
0050 2022 TST R2
0051 F7D1 BNE 0x004C
0052 2033 TST R3
0053 F7C1 BNE 0x004C
0054 9508 RET
(0018) }
(0019) ////*********************初始化************************//////
(0020) void chushihua_bc7281()
(0021) {
(0022) delay(1000);
_chushihua_bc7281:
0055 EE08 LDI R16,0xE8
0056 E013 LDI R17,3
0057 DFF3 RCALL _delay
(0023) xie_bc7281(0x12,0x80); //164模式不反相
0058 E820 LDI R18,0x80
0059 E030 LDI R19,0
005A E102 LDI R16,0x12
005B E010 LDI R17,0
005C D001 RCALL _xie_bc7281
005D 9508 RET
_xie_bc7281:
data --> R20
add --> R22
005E 940E00E2 CALL push_gset2
0060 2F42 MOV R20,R18
0061 2F60 MOV R22,R16
(0024) }
(0025)
(0026) ////********************写bc7281*********************//////
(0027) void xie_bc7281(uchar add ,uchar data)
(0028) {
(0029) chuangsong_bc7281(add);
0062 2F06 MOV R16,R22
0063 2711 CLR R17
0064 D011 RCALL _chuangsong_bc7281
(0030) chuangsong_bc7281(data);
0065 2F04 MOV R16,R20
0066 2711 CLR R17
0067 D00E RCALL _chuangsong_bc7281
0068 940E00D9 CALL pop_gset2
006A 9508 RET
_du_bc7281:
add --> R20
006B 940E00E4 CALL push_gset1
006D 2F40 MOV R20,R16
(0031) }
(0032) ////********************读bc7281********************//////
(0033) uchar du_bc7281(uchar add)
(0034) {
(0035) chuangsong_bc7281(add|0x80); ///////????
006E 2F04 MOV R16,R20
006F 2711 CLR R17
0070 6800 ORI R16,0x80
0071 D004 RCALL _chuangsong_bc7281
(0036) return(jieshou_bc7281());
0072 D031 RCALL _jieshou_bc7281
0073 940E00E7 CALL pop_gset1
0075 9508 RET
_chuangsong_bc7281:
i --> R20
temp --> R22
0076 940E00E2 CALL push_gset2
0078 2F60 MOV R22,R16
(0037) }
(0038) ////********************传送***********************//////
(0039) void chuangsong_bc7281(uchar temp)
(0040) {
(0041) unsigned char i;
(0042) data1;
0079 9ADE SBI 0x1B,6
(0043) datain;
007A 98D6 CBI 0x1A,6
(0044) do
(0045) {
(0046) clk0;
007B 98DF CBI 0x1B,7
(0047) clk1;
007C 9ADF SBI 0x1B,7
(0048) }while((PINA&0x40)==0x40); //直到低电平
007D B229 IN R2,0x19
007E 2433 CLR R3
007F FC26 SBRC R2,6
0080 CFFA RJMP 0x007B
(0049) clk0;
0081 98DF CBI 0x1B,7
(0050) clk1;
0082 9ADF SBI 0x1B,7
(0051) while(!((PINA&0x40)==0x40)); //直到高电平
0083 B389 IN R24,0x19
0084 7480 ANDI R24,0x40
0085 3480 CPI R24,0x40
0086 F7E1 BNE 0x0083
(0052) delay(1000);
0087 EE08 LDI R16,0xE8
0088 E013 LDI R17,3
0089 DFC1 RCALL _delay
(0053) dataout;
008A 9AD6 SBI 0x1A,6
(0054) for(i=0;i<8;i++)
008B 2744 CLR R20
008C C00E RJMP 0x009B
(0055) {
(0056) if((temp&0x80)==0)
008D FD67 SBRC R22,7
008E C002 RJMP 0x0091
(0057) data0;
008F 98DE CBI 0x1B,6
0090 C001 RJMP 0x0092
(0058) else
(0059) data1;
0091 9ADE SBI 0x1B,6
(0060) temp=temp*2;
0092 E082 LDI R24,2
0093 9F86 MUL R24,R22
0094 2D60 MOV R22,R0
(0061) clk0;
0095 98DF CBI 0x1B,7
(0062) delay(5);
0096 E005 LDI R16,5
0097 E010 LDI R17,0
0098 DFB2 RCALL _delay
(0063) clk1;
0099 9ADF SBI 0x1B,7
009A 9543 INC R20
009B 3048 CPI R20,0x8
009C F380 BCS 0x008D
(0064) }
(0065) data1;
009D 9ADE SBI 0x1B,6
(0066) delay(10);
009E E00A LDI R16,0xA
009F E010 LDI R17,0
00A0 DFAA RCALL _delay
00A1 940E00D9 CALL pop_gset2
00A3 9508 RET
_jieshou_bc7281:
i --> R20
j --> R22
00A4 940E00E2 CALL push_gset2
(0067) }
(0068) ////*******************接收**********************//////
(0069) uchar jieshou_bc7281()
(0070) {
(0071) uchar i,j;
(0072) datain;
00A6 98D6 CBI 0x1A,6
(0073) clk0;
00A7 98DF CBI 0x1B,7
(0074) clk1;
00A8 9ADF SBI 0x1B,7
(0075) while((PINA&0X40)==0X40);
00A9 B229 IN R2,0x19
00AA 2433 CLR R3
00AB FC26 SBRC R2,6
00AC CFFC RJMP 0x00A9
(0076) clk0;
00AD 98DF CBI 0x1B,7
(0077) clk1;
00AE 9ADF SBI 0x1B,7
(0078) for(i=0;i<8;i++)
00AF 2744 CLR R20
00B0 C00E RJMP 0x00BF
(0079) {
(0080) delay(10);
00B1 E00A LDI R16,0xA
00B2 E010 LDI R17,0
00B3 DF97 RCALL _delay
(0081) j=j*2;
00B4 E082 LDI R24,2
00B5 9F86 MUL R24,R22
00B6 2D60 MOV R22,R0
(0082) if((PINA&0x40)==0x40)
00B7 B389 IN R24,0x19
00B8 7480 ANDI R24,0x40
00B9 3480 CPI R24,0x40
00BA F409 BNE 0x00BC
(0083) {
(0084) j=j|0x01;
00BB 6061 ORI R22,1
(0085) }
(0086) clk0;
00BC 98DF CBI 0x1B,7
(0087) clk1;
00BD 9ADF SBI 0x1B,7
00BE 9543 INC R20
00BF 3048 CPI R20,0x8
00C0 F380 BCS 0x00B1
(0088) }
(0089) clk0;
00C1 98DF CBI 0x1B,7
(0090) clk1;
00C2 9ADF SBI 0x1B,7
(0091) return(j);
00C3 2F06 MOV R16,R22
00C4 940E00D9 CALL pop_gset2
00C6 9508 RET
FILE: H:\bbi项目源程序\18b20温度传感器\LED显示18B20\1.c
(0001) #include<macros.h>
(0002) #include<iom16v.h>
(0003) #include"bc7281.h"
(0004) /////*************初始化**************///////
(0005)
(0006)
(0007) /*/////**************主函数1820**************/////
(0008) void main()
(0009) {
(0010)
(0011) DDRA|=BIT(7); //脉冲口CLK设置成输出
_main:
00C7 9AD7 SBI 0x1A,7
(0012) chushihua_bc7281();
00C8 DF8C RCALL _chushihua_bc7281
(0013) xie_bc7281(0x15,05);
00C9 E025 LDI R18,5
00CA E105 LDI R16,0x15
00CB DF92 RCALL _xie_bc7281
(0014) xie_bc7281(0x15,10);
00CC E02A LDI R18,0xA
00CD E105 LDI R16,0x15
00CE DF8F RCALL _xie_bc7281
(0015) xie_bc7281(0x15,25);
00CF E129 LDI R18,0x19
00D0 E105 LDI R16,0x15
00D1 DF8C RCALL _xie_bc7281
(0016) xie_bc7281(0x15,45);
00D2 E22D LDI R18,0x2D
00D3 E105 LDI R16,0x15
00D4 DF89 RCALL _xie_bc7281
(0017) xie_bc7281(0x15,35);
FILE: <library>
00D5 E223 LDI R18,0x23
00D6 E105 LDI R16,0x15
00D7 DF86 RCALL _xie_bc7281
00D8 9508 RET
pop_gset2:
00D9 E0E2 LDI R30,2
00DA 940C00E8 JMP pop
push_gset5:
00DC 92FA ST R15,-Y
00DD 92EA ST R14,-Y
push_gset4:
00DE 92DA ST R13,-Y
00DF 92CA ST R12,-Y
push_gset3:
00E0 92BA ST R11,-Y
00E1 92AA ST R10,-Y
push_gset2:
00E2 937A ST R23,-Y
00E3 936A ST R22,-Y
push_gset1:
00E4 935A ST R21,-Y
00E5 934A ST R20,-Y
00E6 9508 RET
pop_gset1:
00E7 E0E1 LDI R30,1
pop:
00E8 9149 LD R20,Y+
00E9 9159 LD R21,Y+
00EA FDE0 SBRC R30,0
00EB 9508 RET
00EC 9169 LD R22,Y+
00ED 9179 LD R23,Y+
00EE FDE1 SBRC R30,1
00EF 9508 RET
00F0 90A9 LD R10,Y+
00F1 90B9 LD R11,Y+
00F2 FDE2 SBRC R30,2
00F3 9508 RET
00F4 90C9 LD R12,Y+
00F5 90D9 LD R13,Y+
00F6 FDE3 SBRC R30,3
00F7 9508 RET
00F8 90E9 LD R14,Y+
00F9 90F9 LD R15,Y+
00FA 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -