📄 adc.lst
字号:
__start:
__text_start:
3A E5CF LDI R28,0x5F
3B E0D4 LDI R29,4
3C BFCD OUT 0x3D,R28
3D BFDE OUT 0x3E,R29
3E 51CE SUBI R28,0x1E
3F 40D0 SBCI R29,0
40 EA0A LDI R16,0xAA
41 8308 STD Y+0,R16
42 2400 CLR R0
43 E7EF LDI R30,0x7F
44 E0F0 LDI R31,0
45 E010 LDI R17,0
46 37EF CPI R30,0x7F
47 07F1 CPC R31,R17
48 F011 BEQ 0x004B
49 9201 ST R0,Z+
4A CFFB RJMP 0x0046
4B 8300 STD Z+0,R16
4C E5E4 LDI R30,0x54
4D E0F0 LDI R31,0
4E E6A0 LDI R26,0x60
4F E0B0 LDI R27,0
50 E010 LDI R17,0
51 E000 LDI R16,0
52 BF0B OUT 0x3B,R16
53 37E3 CPI R30,0x73
54 07F1 CPC R31,R17
55 F021 BEQ 0x005A
56 95C8 LPM
57 9631 ADIW R30,1
58 920D ST R0,X+
59 CFF9 RJMP 0x0053
5A 940E 0138 CALL _main
_exit:
5C CFFF RJMP _exit
FILE: D:\iccavr\mega16\11\10bit_adc\delay.h
(0001) /**********延时函数*****************/
(0002) /*-----------------------------------------------
(0003) delay_us :1us延时函数
(0004) ------------------------------------------------*/
(0005) void delay_us(void)
(0006) {
(0007) asm("nop");
_delay_us:
5D 0000 NOP
5E 9508 RET
_delay_nus:
t --> R20
5F 934A ST R20,-Y
60 935A ST R21,-Y
61 01A8 MOVW R20,R16
(0008) }
(0009) /*-----------------------------------------------
(0010) delay_nus :长延时函数
(0011) 输入参数: t :延时时间 us
(0012) ------------------------------------------------*/
(0013) void delay_nus(unsigned int t)
(0014) {
62 C001 RJMP 0x0064
(0015) while(t--)
(0016) delay_us();
63 DFF9 RCALL _delay_us
64 011A MOVW R2,R20
65 5041 SUBI R20,1
66 4050 SBCI R21,0
67 2022 TST R2
68 F7D1 BNE 0x0063
69 2033 TST R3
6A F7C1 BNE 0x0063
6B 9159 LD R21,Y+
6C 9149 LD R20,Y+
6D 9508 RET
(0017) }
(0018) /*----------------------------------------------
(0019) delay_ms :1ms延时函数
(0020) -----------------------------------------------*/
(0021) void delay_ms(void)
(0022) {
(0023) unsigned int i;
(0024) for(i=0;i<1140;i++);
_delay_ms:
i --> R16
6E 2700 CLR R16
6F 2711 CLR R17
70 C002 RJMP 0x0073
71 5F0F SUBI R16,0xFF
72 4F1F SBCI R17,0xFF
73 3704 CPI R16,0x74
74 E0E4 LDI R30,4
75 071E CPC R17,R30
76 F3D0 BCS 0x0071
77 9508 RET
_delay_nms:
t --> R20
78 934A ST R20,-Y
79 935A ST R21,-Y
7A 01A8 MOVW R20,R16
(0025) }
(0026) /*----------------------------------------------
(0027) delay_nms :长延时函数
(0028) 输入参数: t :延时时间 ms
(0029) -----------------------------------------------*/
(0030) void delay_nms(unsigned int t)
(0031) {
7B C001 RJMP 0x007D
(0032) while(t--)
(0033) delay_ms();
7C DFF1 RCALL _delay_ms
7D 011A MOVW R2,R20
7E 5041 SUBI R20,1
7F 4050 SBCI R21,0
80 2022 TST R2
81 F7D1 BNE 0x007C
82 2033 TST R3
83 F7C1 BNE 0x007C
84 9159 LD R21,Y+
85 9149 LD R20,Y+
86 9508 RET
_lcd_write:
j --> R22
a --> R20
i --> R10
content --> R10
dat_comm --> R12
87 940E 0148 CALL push_xgsetF03C
89 2EA2 MOV R10,R18
8A 2EC0 MOV R12,R16
FILE: D:\iccavr\mega16\11\10bit_adc\lcd12232.h
(0001) //定义LCD口线
(0002) #define lcd_cs PA4
(0003) #define lcd_std PA3
(0004) #define lcd_sclk PA2
(0005) #define lcd_port PORTA
(0006) #define lcd_ddr DDRA
(0007)
(0008) //LCD显示坐标定义
(0009) #define x1 0x80 //lcd初始坐标1
(0010) #define x2 0x90 //lcd初始坐标2
(0011)
(0012) //LCD数据/命令格式定义
(0013) #define command 0 //lcd命令
(0014) #define data 1 //lcd数据
(0015)
(0016) //传送单个字节到LCD
(0017) void lcd_write(unsigned char dat_comm,unsigned char content)
(0018) {
(0019) unsigned char a,i,j;
(0020) delay_ms();//延时时间要根据实际使用的芯片采用不同的延时时间
8B DFE2 RCALL _delay_ms
(0021) a=content; //数据记录
8C 2D4A MOV R20,R10
(0022) //delay_ms();//这个延时要根据实际需要看是否需要增加//如8515就要加
(0023) lcd_port|=BIT(lcd_cs);//cs=1
8D 9ADC SBI 0x1B,4
(0024) lcd_port&=~BIT(lcd_sclk);//sclk=0;
8E 98DA CBI 0x1B,2
(0025) lcd_port|=(1<<lcd_std);//PORTC|=BIT(lcd_std);//std=1;
8F 9ADB SBI 0x1B,3
(0026) for(i=0;i<5;i++) //启动命令
90 24AA CLR R10
91 C003 RJMP 0x0095
(0027) {
(0028) lcd_port|=BIT(lcd_sclk);//sclk=1;
92 9ADA SBI 0x1B,2
(0029) lcd_port&=~BIT(lcd_sclk);//sclk=0;
93 98DA CBI 0x1B,2
94 94A3 INC R10
95 2D8A MOV R24,R10
96 3085 CPI R24,5
97 F3D0 BCS 0x0092
(0030) }
(0031) lcd_port&=~(1<<lcd_std);//PORTC&=~BIT(lcd_std);//std=0;
98 98DB CBI 0x1B,3
(0032) lcd_port|=BIT(lcd_sclk);//sclk=1;
99 9ADA SBI 0x1B,2
(0033) lcd_port&=~BIT(lcd_sclk);//sclk=0;
9A 98DA CBI 0x1B,2
(0034) if(dat_comm)
9B 20CC TST R12
9C F011 BEQ 0x009F
(0035) lcd_port|=(1<<lcd_std);//PORTC|=BIT(lcd_std);//std=1; //数据
9D 9ADB SBI 0x1B,3
9E C001 RJMP 0x00A0
(0036) else
(0037) lcd_port&=~(1<<lcd_std);//PORTC&=~BIT(lcd_std);//std=0; //命令
9F 98DB CBI 0x1B,3
(0038) lcd_port|=BIT(lcd_sclk);//sclk=1;
A0 9ADA SBI 0x1B,2
(0039) lcd_port&=~BIT(lcd_sclk);//sclk=0;
A1 98DA CBI 0x1B,2
(0040) lcd_port&=~(1<<lcd_std);//PORTC&=~BIT(lcd_std);//std=0;
A2 98DB CBI 0x1B,3
(0041) lcd_port|=BIT(lcd_sclk);//sclk=1;
A3 9ADA SBI 0x1B,2
(0042) lcd_port&=~BIT(lcd_sclk);//sclk=0;
A4 98DA CBI 0x1B,2
(0043) for(j=0;j<2;j++) //循环发送8个位数据
A5 2766 CLR R22
A6 C01A RJMP 0x00C1
(0044) {
(0045) for(i=0;i<4;i++)
A7 24AA CLR R10
A8 C00B RJMP 0x00B4
(0046) {
(0047) if ((a&0x80)==0x80)
A9 2F84 MOV R24,R20
AA 7880 ANDI R24,0x80
AB 3880 CPI R24,0x80
AC F411 BNE 0x00AF
(0048) lcd_port|=(1<<lcd_std);//PORTC|=BIT(lcd_std);//单字节传送
AD 9ADB SBI 0x1B,3
AE C001 RJMP 0x00B0
(0049) else
(0050) lcd_port&=~(1<<lcd_std);//PORTC&=~BIT(lcd_std);
AF 98DB CBI 0x1B,3
(0051) a=a<<1;
B0 0F44 LSL R20
(0052) lcd_port|=BIT(lcd_sclk);//sclk=1;
B1 9ADA SBI 0x1B,2
(0053) lcd_port&=~BIT(lcd_sclk);//sclk=0;
B2 98DA CBI 0x1B,2
B3 94A3 INC R10
B4 2D8A MOV R24,R10
B5 3084 CPI R24,4
B6 F390 BCS 0x00A9
(0054) }
(0055) lcd_port&=~(1<<lcd_std);//PORTC&=~BIT(lcd_std);//std=0;
B7 98DB CBI 0x1B,3
(0056) for(i=0;i<4;i++) //发送4个空数据
B8 24AA CLR R10
B9 C003 RJMP 0x00BD
(0057) {
(0058) lcd_port|=BIT(lcd_sclk);//sclk=1;
BA 9ADA SBI 0x1B,2
(0059) lcd_port&=~BIT(lcd_sclk);//sclk=0;
BB 98DA CBI 0x1B,2
BC 94A3 INC R10
BD 2D8A MOV R24,R10
BE 3084 CPI R24,4
BF F3D0 BCS 0x00BA
C0 9563 INC R22
C1 3062 CPI R22,2
C2 F320 BCS 0x00A7
(0060) }
(0061) }
(0062) lcd_port|=BIT(lcd_cs);
C3 9ADC SBI 0x1B,4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -