📄 ad_key.lis
字号:
00EA 89EC ldi R24,201
00EC 8017 cp R24,R16
00EE 30F4 brsh L22
00F0 X14:
00F0 033D cpi R16,211
00F2 20F4 brsh L22
00F4 X15:
00F4 .dbline 48
00F4 86E0 ldi R24,6
00F6 80930000 sts _key_num,R24
00FA 03C0 xjmp L23
00FC L22:
00FC .dbline 49
00FC ; else key_num=0;
00FC 2224 clr R2
00FE 20920000 sts _key_num,R2
0102 L23:
0102 L21:
0102 L19:
0102 L17:
0102 L15:
0102 L13:
0102 .dbline 51
0102 ;
0102 ; AD_Flag=1;
0102 81E0 ldi R24,1
0104 80930300 sts _AD_Flag,R24
0108 .dbline 52
0108 ; }
0108 11C0 xjmp L7
010A L6:
010A .dbline 53
010A ; else if(AD_time==1)AD_data1 = AD_data;
010A 80910200 lds R24,_AD_time
010E 8130 cpi R24,1
0110 29F4 brne L24
0112 X16:
0112 .dbline 53
0112 20900600 lds R2,_AD_data
0116 20920500 sts _AD_data1,R2
011A 08C0 xjmp L25
011C L24:
011C .dbline 54
011C ; else if(AD_time==2)AD_data2 = AD_data;
011C 80910200 lds R24,_AD_time
0120 8230 cpi R24,2
0122 21F4 brne L26
0124 X17:
0124 .dbline 54
0124 20900600 lds R2,_AD_data
0128 20920400 sts _AD_data2,R2
012C L26:
012C L25:
012C L7:
012C .dbline 55
012C ; }
012C L4:
012C L3:
012C .dbline -2
012C L1:
012C .dbline 0 ; func end
012C 2990 ld R2,y+
012E 2FBE OUT 63,R2
0130 9991 ld R25,y+
0132 8991 ld R24,y+
0134 0991 ld R16,y+
0136 5990 ld R5,y+
0138 4990 ld R4,y+
013A 3990 ld R3,y+
013C 2990 ld R2,y+
013E 1895 reti
0140 .dbend
0140 .dbfunc e AD_Init _AD_Init fV
.even
0140 _AD_Init::
0140 .dbline -1
0140 .dbline 66
0140 ; }
0140 ;
0140 ;
0140 ;
0140 ; //---------------------------------//
0140 ; //
0140 ; // AD初始化函数
0140 ; //
0140 ; //---------------------------------//
0140 ; void AD_Init(void)
0140 ; {
0140 .dbline 67
0140 ; PORTA &= 0x7F; // PA7无上拉
0140 8BB3 in R24,0x1b
0142 8F77 andi R24,127
0144 8BBB out 0x1b,R24
0146 .dbline 68
0146 ; DDRA &= 0x7F; // 设置PA7口为输入
0146 8AB3 in R24,0x1a
0148 8F77 andi R24,127
014A 8ABB out 0x1a,R24
014C .dbline 69
014C ; ADMUX=0x67; // 基准AVCC,左对齐选择第7通道
014C 87E6 ldi R24,103
014E 87B9 out 0x7,R24
0150 .dbline 70
0150 ; ADCSRA=0xCE; // 采用单次转换模式,64分频
0150 8EEC ldi R24,206
0152 86B9 out 0x6,R24
0154 .dbline 71
0154 ; ADCSRA|=BIT(ADSC); // 启动一次哑转换
0154 369A sbi 0x6,6
0156 .dbline 72
0156 ; SREG=0x80; // 开中断
0156 80E8 ldi R24,128
0158 8FBF out 0x3f,R24
015A .dbline -2
015A L28:
015A .dbline 0 ; func end
015A 0895 ret
015C .dbend
015C .dbfunc e TC0_handler _TC0_handler fV
.even
015C _TC0_handler::
015C 0A92 st -y,R0
015E 0FB6 IN R0,63
0160 0A92 st -y,R0
0162 .dbline -1
0162 .dbline 83
0162 ; }
0162 ;
0162 ;
0162 ;
0162 ; //---------------------------------//
0162 ; //
0162 ; // T/C0中断函数
0162 ; //
0162 ; //---------------------------------//
0162 ; void TC0_handler(void)
0162 ; {
0162 .dbline 84
0162 ; ADCSRA|=BIT(ADSC); // 进行一次AD转换
0162 369A sbi 0x6,6
0164 .dbline -2
0164 L29:
0164 .dbline 0 ; func end
0164 0990 ld R0,y+
0166 0FBE OUT 63,R0
0168 0990 ld R0,y+
016A 1895 reti
016C .dbend
016C .dbfunc e TC0_Init _TC0_Init fV
.even
016C _TC0_Init::
016C .dbline -1
016C .dbline 95
016C ; }
016C ;
016C ;
016C ;
016C ; //---------------------------------//
016C ; //
016C ; // T/C0初始化函数
016C ; //
016C ; //---------------------------------//
016C ; void TC0_Init(void)
016C ; {
016C .dbline 98
016C ; // 16MHz模式下,16ms中断一次,作为AD采样间隔基准
016C ;
016C ; TCNT0=0; // 定时器0初值
016C 2224 clr R2
016E 22BE out 0x32,R2
0170 .dbline 100
0170 ;
0170 ; TCCR0 = BIT(CS02)| BIT(CS00); // 预分频 ck/1024 ,启动计数器
0170 85E0 ldi R24,5
0172 83BF out 0x33,R24
0174 .dbline 102
0174 ;
0174 ; TIMSK = BIT(TOIE0); // T/C0 中断允许
0174 81E0 ldi R24,1
0176 89BF out 0x39,R24
0178 .dbline -2
0178 L30:
0178 .dbline 0 ; func end
0178 0895 ret
017A .dbend
.area bss(ram, con, rel)
0000 .dbfile C:\DOCUME~1\浪仔\桌面\教学实验板\M16_VS1003_test\AD_key.c
0000 _key_num::
0000 .blkb 1
0001 .dbsym e key_num _key_num c
0001 _tmp::
0001 .blkb 1
0002 .dbsym e tmp _tmp c
0002 _AD_time::
0002 .blkb 1
0003 .dbsym e AD_time _AD_time c
0003 _AD_Flag::
0003 .blkb 1
0004 .dbsym e AD_Flag _AD_Flag c
0004 _AD_data2::
0004 .blkb 1
0005 .dbsym e AD_data2 _AD_data2 c
0005 _AD_data1::
0005 .blkb 1
0006 .dbsym e AD_data1 _AD_data1 c
0006 _AD_data::
0006 .blkb 1
0007 .dbsym e AD_data _AD_data c
0007 ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -