📄 main.lss
字号:
758: 25 97 sbiw r28, 0x05 ; 5
75a: 0f b6 in r0, 0x3f ; 63
75c: f8 94 cli
75e: de bf out 0x3e, r29 ; 62
760: 0f be out 0x3f, r0 ; 63
762: cd bf out 0x3d, r28 ; 61
764: 69 83 std Y+1, r22 ; 0x01
766: 7a 83 std Y+2, r23 ; 0x02
768: 8b 83 std Y+3, r24 ; 0x03
76a: 9c 83 std Y+4, r25 ; 0x04
76c: 4d 83 std Y+5, r20 ; 0x05
//变量定义
// uint8_t addr_l,addr_m,addr_h;
//
cbi(PORTD,6);//ram片选拉低
76e: 80 91 32 00 lds r24, 0x0032
772: 8f 7b andi r24, 0xBF ; 191
774: 80 93 32 00 sts 0x0032, r24
sbi(PORTD,5);//AD片选拉高
778: 80 91 32 00 lds r24, 0x0032
77c: 80 62 ori r24, 0x20 ; 32
77e: 80 93 32 00 sts 0x0032, r24
DDRA=0xFF;//a口输出
782: 8f ef ldi r24, 0xFF ; 255
784: 80 93 3a 00 sts 0x003A, r24
// addr_h=(address>>16);//高4位地址
// addr_h=(addr_h&0x0F);
// addr_m=(address>>8);//中间8位地址
// addr_l=address;//低8位地址
// PORTA=addr_l;//写ram地址
// PORTC=addr_m;
// PORTF&=0xF0;//低4位清零
// PORTF|=addr_h;
PORTA=address;//低8位地址
788: 89 81 ldd r24, Y+1 ; 0x01
78a: 80 93 3b 00 sts 0x003B, r24
PORTC=(address>>8);//中间8位地址
78e: 89 81 ldd r24, Y+1 ; 0x01
790: 9a 81 ldd r25, Y+2 ; 0x02
792: ab 81 ldd r26, Y+3 ; 0x03
794: bc 81 ldd r27, Y+4 ; 0x04
796: 89 2f mov r24, r25
798: 9a 2f mov r25, r26
79a: ab 2f mov r26, r27
79c: bb 27 eor r27, r27
79e: 80 93 35 00 sts 0x0035, r24
PORTF&=0xF0;//低4位清零
7a2: 90 ef ldi r25, 0xF0 ; 240
7a4: 80 91 62 00 lds r24, 0x0062
7a8: 89 23 and r24, r25
7aa: 80 93 62 00 sts 0x0062, r24
PORTF|=(address>>16)&0x0F;
7ae: 89 81 ldd r24, Y+1 ; 0x01
7b0: 9a 81 ldd r25, Y+2 ; 0x02
7b2: ab 81 ldd r26, Y+3 ; 0x03
7b4: bc 81 ldd r27, Y+4 ; 0x04
7b6: cd 01 movw r24, r26
7b8: aa 27 eor r26, r26
7ba: bb 27 eor r27, r27
7bc: 98 2f mov r25, r24
7be: 9f 70 andi r25, 0x0F ; 15
7c0: 80 91 62 00 lds r24, 0x0062
7c4: 89 2b or r24, r25
7c6: 80 93 62 00 sts 0x0062, r24
cbi(PORTG,2);//地址锁存
7ca: 80 91 65 00 lds r24, 0x0065
7ce: 8b 7f andi r24, 0xFB ; 251
7d0: 80 93 65 00 sts 0x0065, r24
PORTA=data;//将数据放在总线上
7d4: 8d 81 ldd r24, Y+5 ; 0x05
7d6: 80 93 3b 00 sts 0x003B, r24
cbi(PORTG,0);//写拉低
7da: 80 91 65 00 lds r24, 0x0065
7de: 8e 7f andi r24, 0xFE ; 254
7e0: 80 93 65 00 sts 0x0065, r24
delay_ms();//延时//////////////////
7e4: 0e 94 39 03 call 0x672
sbi(PORTG,0);//写拉高
7e8: 80 91 65 00 lds r24, 0x0065
7ec: 81 60 ori r24, 0x01 ; 1
7ee: 80 93 65 00 sts 0x0065, r24
sbi(PORTG,2);//去锁存
7f2: 80 91 65 00 lds r24, 0x0065
7f6: 84 60 ori r24, 0x04 ; 4
7f8: 80 93 65 00 sts 0x0065, r24
}
7fc: 25 96 adiw r28, 0x05 ; 5
7fe: 0f b6 in r0, 0x3f ; 63
800: f8 94 cli
802: de bf out 0x3e, r29 ; 62
804: 0f be out 0x3f, r0 ; 63
806: cd bf out 0x3d, r28 ; 61
808: df 91 pop r29
80a: cf 91 pop r28
80c: 08 95 ret
0000080e <SRAM_1M_8_READ>:
//SRAM读操作
uint8_t SRAM_1M_8_READ(uint32_t address)
{
80e: cf 93 push r28
810: df 93 push r29
812: cd b7 in r28, 0x3d ; 61
814: de b7 in r29, 0x3e ; 62
816: 28 97 sbiw r28, 0x08 ; 8
818: 0f b6 in r0, 0x3f ; 63
81a: f8 94 cli
81c: de bf out 0x3e, r29 ; 62
81e: 0f be out 0x3f, r0 ; 63
820: cd bf out 0x3d, r28 ; 61
822: 69 83 std Y+1, r22 ; 0x01
824: 7a 83 std Y+2, r23 ; 0x02
826: 8b 83 std Y+3, r24 ; 0x03
828: 9c 83 std Y+4, r25 ; 0x04
uint8_t addr_l,addr_m,addr_h,temp;
cbi(PORTD,6);//ram片选拉低
82a: 80 91 32 00 lds r24, 0x0032
82e: 8f 7b andi r24, 0xBF ; 191
830: 80 93 32 00 sts 0x0032, r24
sbi(PORTD,5);//AD片选拉高
834: 80 91 32 00 lds r24, 0x0032
838: 80 62 ori r24, 0x20 ; 32
83a: 80 93 32 00 sts 0x0032, r24
DDRA=0xFF;//a口输出
83e: 8f ef ldi r24, 0xFF ; 255
840: 80 93 3a 00 sts 0x003A, r24
addr_l=address;//低8位地址
844: 89 81 ldd r24, Y+1 ; 0x01
846: 8d 83 std Y+5, r24 ; 0x05
addr_m=(address>>8);//中间8位地址
848: 89 81 ldd r24, Y+1 ; 0x01
84a: 9a 81 ldd r25, Y+2 ; 0x02
84c: ab 81 ldd r26, Y+3 ; 0x03
84e: bc 81 ldd r27, Y+4 ; 0x04
850: 89 2f mov r24, r25
852: 9a 2f mov r25, r26
854: ab 2f mov r26, r27
856: bb 27 eor r27, r27
858: 8e 83 std Y+6, r24 ; 0x06
addr_h=(address>>16);//高4位地址
85a: 89 81 ldd r24, Y+1 ; 0x01
85c: 9a 81 ldd r25, Y+2 ; 0x02
85e: ab 81 ldd r26, Y+3 ; 0x03
860: bc 81 ldd r27, Y+4 ; 0x04
862: cd 01 movw r24, r26
864: aa 27 eor r26, r26
866: bb 27 eor r27, r27
868: 8f 83 std Y+7, r24 ; 0x07
addr_h=(addr_h&0x0F);
86a: 8f 81 ldd r24, Y+7 ; 0x07
86c: 8f 70 andi r24, 0x0F ; 15
86e: 8f 83 std Y+7, r24 ; 0x07
PORTA=addr_l;//输出ram地址
870: 8d 81 ldd r24, Y+5 ; 0x05
872: 80 93 3b 00 sts 0x003B, r24
PORTC=addr_m;
876: 8e 81 ldd r24, Y+6 ; 0x06
878: 80 93 35 00 sts 0x0035, r24
PORTF&=0xF0;//低4位清零
87c: 90 ef ldi r25, 0xF0 ; 240
87e: 80 91 62 00 lds r24, 0x0062
882: 89 23 and r24, r25
884: 80 93 62 00 sts 0x0062, r24
PORTF|=addr_h;
888: 90 91 62 00 lds r25, 0x0062
88c: 8f 81 ldd r24, Y+7 ; 0x07
88e: 89 2b or r24, r25
890: 80 93 62 00 sts 0x0062, r24
cbi(PORTG,2);//地址锁存
894: 80 91 65 00 lds r24, 0x0065
898: 8b 7f andi r24, 0xFB ; 251
89a: 80 93 65 00 sts 0x0065, r24
cbi(PORTG,1);//读拉低
89e: 80 91 65 00 lds r24, 0x0065
8a2: 8d 7f andi r24, 0xFD ; 253
8a4: 80 93 65 00 sts 0x0065, r24
delay_ms();//延时//////////////////
8a8: 0e 94 39 03 call 0x672
DDRA=0x00;//a口输入
8ac: 10 92 3a 00 sts 0x003A, r1
PORTA=0xFF;//设置上拉
8b0: 8f ef ldi r24, 0xFF ; 255
8b2: 80 93 3b 00 sts 0x003B, r24
temp=PINA;//读取总线上的数据
8b6: 80 91 39 00 lds r24, 0x0039
8ba: 88 87 std Y+8, r24 ; 0x08
sbi(PORTG,1);//读拉高
8bc: 80 91 65 00 lds r24, 0x0065
8c0: 82 60 ori r24, 0x02 ; 2
8c2: 80 93 65 00 sts 0x0065, r24
sbi(PORTG,2);//去锁存
8c6: 80 91 65 00 lds r24, 0x0065
8ca: 84 60 ori r24, 0x04 ; 4
8cc: 80 93 65 00 sts 0x0065, r24
sbi(PORTD,6);//去掉片选信号
8d0: 80 91 32 00 lds r24, 0x0032
8d4: 80 64 ori r24, 0x40 ; 64
8d6: 80 93 32 00 sts 0x0032, r24
return temp;
8da: 88 85 ldd r24, Y+8 ; 0x08
8dc: 99 27 eor r25, r25
}
8de: 28 96 adiw r28, 0x08 ; 8
8e0: 0f b6 in r0, 0x3f ; 63
8e2: f8 94 cli
8e4: de bf out 0x3e, r29 ; 62
8e6: 0f be out 0x3f, r0 ; 63
8e8: cd bf out 0x3d, r28 ; 61
8ea: df 91 pop r29
8ec: cf 91 pop r28
8ee: 08 95 ret
000008f0 <AD7891_WRITE>:
//AD写操作
void AD7891_WRITE(uint16_t cmd)
{
8f0: cf 93 push r28
8f2: df 93 push r29
8f4: cd b7 in r28, 0x3d ; 61
8f6: de b7 in r29, 0x3e ; 62
8f8: 23 97 sbiw r28, 0x03 ; 3
8fa: 0f b6 in r0, 0x3f ; 63
8fc: f8 94 cli
8fe: de bf out 0x3e, r29 ; 62
900: 0f be out 0x3f, r0 ; 63
902: cd bf out 0x3d, r28 ; 61
904: 89 83 std Y+1, r24 ; 0x01
906: 9a 83 std Y+2, r25 ; 0x02
//CS:PD5;WR:PG0;RD:PG1
//DATA0~DATA7:PORTA
//ADCD8~ADCD11:PB4~PB7
uint8_t addr_h;
DDRA=0xFF;//a口输出
908: 8f ef ldi r24, 0xFF ; 255
90a: 80 93 3a 00 sts 0x003A, r24
DDRB|=0xF0;//端口B高4位输出
90e: 80 91 37 00 lds r24, 0x0037
912: 80 6f ori r24, 0xF0 ; 240
914: 80 93 37 00 sts 0x0037, r24
// addr_l=cmd;
addr_h=(cmd>>8);
918: 89 81 ldd r24, Y+1 ; 0x01
91a: 9a 81 ldd r25, Y+2 ; 0x02
91c: 89 2f mov r24, r25
91e: 99 27 eor r25, r25
920: 8b 83 std Y+3, r24 ; 0x03
addr_h=(addr_h<<4);//低4位移动到高位
922: 8b 81 ldd r24, Y+3 ; 0x03
924: 82 95 swap r24
926: 80 7f andi r24, 0xF0 ; 240
928: 8b 83 std Y+3, r24 ; 0x03
addr_h&=0xF0;//取高4位
92a: 90 ef ldi r25, 0xF0 ; 240
92c: 8b 81 ldd r24, Y+3 ; 0x03
92e: 89 23 and r24, r25
930: 8b 83 std Y+3, r24 ; 0x03
//片选
cbi(PORTD,5);//ad片选拉低
932: 80 91 32 00 lds r24, 0x0032
936: 8f 7d andi r24, 0xDF ; 223
938: 80 93 32 00 sts 0x0032, r24
sbi(PORTD,6);//ram片选拉高
93c: 80 91 32 00 lds r24, 0x0032
940: 80 64 ori r24, 0x40 ; 64
942: 80 93 32 00 sts 0x0032, r24
PORTA=cmd;
946: 89 81 ldd r24, Y+1 ; 0x01
948: 80 93 3b 00 sts 0x003B, r24
PORTB&=0x0F;//高4位清零
94c: 80 91 38 00 lds r24, 0x0038
950: 8f 70 andi r24, 0x0F ; 15
952: 80 93 38 00 sts 0x0038, r24
PORTB|=addr_h;
956: 90 91 38 00 lds r25, 0x0038
95a: 8b 81 ldd r24, Y+3 ; 0x03
95c: 89 2b or r24, r25
95e: 80 93 38 00 sts 0x0038, r24
cbi(PORTG,0);//写拉低
962: 80 91 65 00 lds r24, 0x0065
966: 8e 7f andi r24, 0xFE ; 254
968: 80 93 65 00 sts 0x0065, r24
delay_ms();
96c: 0e 94 39 03 call 0x672
sbi(PORTG,0);//写拉高
970: 80 91 65 00 lds r24, 0x0065
974: 81 60 ori r24, 0x01 ; 1
976: 80 93 65 00 sts 0x0065, r24
}
97a: 23 96 adiw r28, 0x03 ; 3
97c: 0f b6 in r0, 0x3f ; 63
97e: f8 94 cli
980: de bf out 0x3e, r29 ; 62
982: 0f be out 0x3f, r0 ; 63
984: cd bf out 0x3d, r28 ; 61
986: df 91 pop r29
988: cf 91 pop r28
98a: 08 95 ret
0000098c <AD7891_READ>:
//AD读操作,返回一16位整数
uint16_t AD7891_READ(void)
{
98c: cf 93 push r28
98e: df 93 push r29
990: cd b7 in r28, 0x3d ; 61
992: de b7 in r29, 0x3e ; 62
994: 24 97 sbiw r28, 0x04 ; 4
996: 0f b6 in r0, 0x3f ; 63
998: f8 94 cli
99a: de bf out 0x3e, r29 ; 62
99c: 0f be out 0x3f, r0 ; 63
99e: cd bf out 0x3d, r28 ; 61
//CS:PD5;WR:PG0;RD:PG1
//DATA0~DATA7:PORTA
//ADCD8~ADCD11:PB4~PB7
uint8_t result_l,result_h;
uint16_t result;
////////设置端口方向////////////////
DDRA=0x00;//PORTA as input
9a0: 10 92 3a 00 sts 0x003A, r1
PORTA=0xFF;//设置上拉
9a4: 8f ef ldi r24, 0xFF ; 255
9a6: 80 93 3b 00 sts 0x003B, r24
DDRB&=0x0F;//PB4~PB7 as input
9aa: 80 91 37 00 lds r24, 0x0037
9ae: 8f 70 andi r24, 0x0F ; 15
9b0: 80 93 37 00 sts 0x0037, r24
PORTB|=0xF0;//PB4~PB7设置上拉
9b4: 80 91 38 00 lds r24, 0x0038
9b8: 80 6f ori r24, 0xF0 ; 240
9ba: 80 93 38 00 sts 0x0038, r24
////////读///////////////////////////
//片选
cbi(PORTD,5);//ad片选拉低
9be: 80 91 32 00 lds r24, 0x0032
9c2: 8f 7d andi r24, 0xDF ; 223
9c4: 80 93 32 00 sts 0x0032, r24
sbi(PORTD,6);//ram片选拉高
9c8: 80 91 32 00 lds r24, 0x0032
9cc: 80 64 ori r24, 0x40 ; 64
9ce: 80 93 32 00 sts 0x0032, r24
cbi(PORTG,1);//读拉低
9d2: 80 91 65 00 lds r24, 0x0065
9d6: 8d 7f andi r24, 0xFD ; 253
9d8: 80 93 65 00 sts 0x0065, r24
delay_ms();
9dc: 0e 94 39 03 call 0x672
result_l=PINA;
9e0: 80 91 39 00 lds r24, 0x0039
9e4: 89 83 std Y+1, r24 ; 0x01
result_h=PINB;
9e6: 80 91 36 00 lds r24, 0x0036
9ea: 8a 83 std Y+2, r24 ; 0x02
result_h&=0xF0;
9ec: 90 ef ldi r25, 0xF0 ; 240
9ee: 8a 81 ldd r24, Y+2 ; 0x02
9f0: 89 23 and r24, r25
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -