📄 test_7135.lis
字号:
0068 ; {
0068 .dbline 106
0068 ; if(!N)
0068 20900000 lds R2,_N
006C 2220 tst R2
006E 49F4 brne L15
0070 .dbline 107
0070 ; {
0070 .dbline 108
0070 ; TCCR1B=0X01;//开始内部计数
0070 81E0 ldi R24,1
0072 8EBD out 0x2e,R24
0074 .dbline 109
0074 ; MCUCR=0X02;//设置外部中断0下降沿产生中断
0074 82E0 ldi R24,2
0076 85BF out 0x35,R24
0078 .dbline 110
0078 ; N++;
0078 822D mov R24,R2
007A 8F5F subi R24,255 ; addi 1
007C 80930000 sts _N,R24
0080 .dbline 111
0080 ; }
0080 77C0 xjmp L16
0082 L15:
0082 .dbline 113
0082 .dbline 114
0082 2224 clr R2
0084 2EBC out 0x2e,R2
0086 .dbline 115
0086 F894 cli
0088 .dbline 117
0088 20900100 lds R2,_T1OVF_NUM
008C 30900200 lds R3,_T1OVF_NUM+1
0090 4424 clr R4
0092 5524 clr R5
0094 30920300 sts _T1_NUM+1,R3
0098 20920200 sts _T1_NUM,R2
009C 50920500 sts _T1_NUM+2+1,R5
00A0 40920400 sts _T1_NUM+2,R4
00A4 .dbline 118
00A4 40900400 lds R4,_T1_NUM+2
00A8 50900500 lds R5,_T1_NUM+2+1
00AC 20900200 lds R2,_T1_NUM
00B0 30900300 lds R3,_T1_NUM+1
00B4 40E0 ldi R20,0
00B6 50E0 ldi R21,0
00B8 61E0 ldi R22,1
00BA 70E0 ldi R23,0
00BC 5A92 st -y,R5
00BE 4A92 st -y,R4
00C0 3A92 st -y,R3
00C2 2A92 st -y,R2
00C4 8A01 movw R16,R20
00C6 9B01 movw R18,R22
00C8 0E940000 xcall empy32u
00CC 1801 movw R2,R16
00CE 2901 movw R4,R18
00D0 6CB4 in R6,0x2c
00D2 7DB4 in R7,0x2d
00D4 8824 clr R8
00D6 9924 clr R9
00D8 260C add R2,R6
00DA 371C adc R3,R7
00DC 481C adc R4,R8
00DE 591C adc R5,R9
00E0 30920300 sts _T1_NUM+1,R3
00E4 20920200 sts _T1_NUM,R2
00E8 50920500 sts _T1_NUM+2+1,R5
00EC 40920400 sts _T1_NUM+2,R4
00F0 .dbline 119
00F0 86E0 ldi R24,6
00F2 90E0 ldi R25,0
00F4 8A93 st -y,R24
00F6 8101 movw R16,R2
00F8 9201 movw R18,R4
00FA 0E940000 xcall lsr32
00FE 10930300 sts _T1_NUM+1,R17
0102 00930200 sts _T1_NUM,R16
0106 30930500 sts _T1_NUM+2+1,R19
010A 20930400 sts _T1_NUM+2,R18
010E .dbline 120
010E 41E1 ldi R20,17
0110 57E2 ldi R21,39
0112 60E0 ldi R22,0
0114 70E0 ldi R23,0
0116 1801 movw R2,R16
0118 2901 movw R4,R18
011A 241A sub R2,R20
011C 350A sbc R3,R21
011E 460A sbc R4,R22
0120 570A sbc R5,R23
0122 30920300 sts _T1_NUM+1,R3
0126 20920200 sts _T1_NUM,R2
012A 50920500 sts _T1_NUM+2+1,R5
012E 40920400 sts _T1_NUM+2,R4
0132 .dbline 121
0132 4AE0 ldi R20,10
0134 50E0 ldi R21,0
0136 60E0 ldi R22,0
0138 70E0 ldi R23,0
013A 7A93 st -y,R23
013C 6A93 st -y,R22
013E 5A93 st -y,R21
0140 4A93 st -y,R20
0142 8101 movw R16,R2
0144 9201 movw R18,R4
0146 0E940000 xcall div32u
014A 10930100 sts _VIN+1,R17
014E 00930000 sts _VIN,R16
0152 .dbline 122
0152 52D0 xcall _DATA_DISPLAY
0154 .dbline 124
0154 2224 clr R2
0156 3324 clr R3
0158 30920200 sts _T1OVF_NUM+1,R3
015C 20920100 sts _T1OVF_NUM,R2
0160 .dbline 125
0160 3DBC out 0x2d,R3
0162 2CBC out 0x2c,R2
0164 .dbline 126
0164 85B7 in R24,0x35
0166 8360 ori R24,3
0168 85BF out 0x35,R24
016A .dbline 127
016A 20920000 sts _N,R2
016E .dbline 128
016E C098 cbi 0x18,0
0170 .dbline 130
0170 L16:
0170 .dbline -2
0170 L14:
0170 0E940000 xcall pop_gset2
0174 0E940000 xcall pop_lset
0178 .dbline 0 ; func end
0178 1895 reti
017A .dbend
017A .dbfunc e T1_INIT _T1_INIT fV
.even
017A _T1_INIT::
017A .dbline -1
017A .dbline 138
017A ; else
017A ; {
017A ; TCCR1B=0X00;//定时器t1停止工作
017A ; CLI();//关中断,进行数据处理
017A ; //数据处理
017A ; T1_NUM=T1OVF_NUM;
017A ; T1_NUM=(T1_NUM*65536+TCNT1);
017A ; T1_NUM/=64;
017A ; T1_NUM-=10001;
017A ; VIN=T1_NUM/10;
017A ; DATA_DISPLAY(VIN);
017A ; //数据处理结束
017A ; T1OVF_NUM=0;
017A ; TCNT1=0X0000;
017A ; MCUCR|=((1<<ISC01)|(1<<ISC00));//设置外部上升沿中断
017A ; N=0;//
017A ; PORTB&=~(1<<0);//上位机发0x01,测量一次,停止ad
017A ; //SEI();先进行1次采样
017A ; }
017A ; }
017A ; //**************************************************
017A ; //函数名称:void T1_INIT(void)
017A ; //函数功能:内部定时
017A ; //注意事项,定时器未工作,定时器工作,需+TCCR1B=0X01;
017A ; //**************************************************
017A ; void T1_INIT(void)
017A ; {
017A .dbline 139
017A ; TCCR1A=0X00;
017A 2224 clr R2
017C 2FBC out 0x2f,R2
017E .dbline 140
017E ; TCNT1=0X0000;
017E 3324 clr R3
0180 3DBC out 0x2d,R3
0182 2CBC out 0x2c,R2
0184 .dbline 141
0184 ; TIMSK|=(1<<TOIE1);
0184 89B7 in R24,0x39
0186 8460 ori R24,4
0188 89BF out 0x39,R24
018A .dbline -2
018A L17:
018A .dbline 0 ; func end
018A 0895 ret
018C .dbend
.area vector(rom, abs)
.org 32
0020 0C94C600 jmp _T1_OVF
.area text(rom, con, rel)
018C .dbfile test_7135.c
018C .dbfunc e T1_OVF _T1_OVF fV
.even
018C _T1_OVF::
018C 8A93 st -y,R24
018E 9A93 st -y,R25
0190 8FB7 in R24,0x3f
0192 8A93 st -y,R24
0194 .dbline -1
0194 .dbline 150
0194 ; }
0194 ; //**************************************************
0194 ; //函数名称:void T1_OVF(void)
0194 ; //函数功能:ti溢出处理
0194 ; //注意事项:
0194 ; //**************************************************
0194 ; #pragma interrupt_handler T1_OVF:9
0194 ; void T1_OVF(void)
0194 ; {
0194 .dbline 151
0194 ; T1OVF_NUM++;
0194 80910100 lds R24,_T1OVF_NUM
0198 90910200 lds R25,_T1OVF_NUM+1
019C 0196 adiw R24,1
019E 90930200 sts _T1OVF_NUM+1,R25
01A2 80930100 sts _T1OVF_NUM,R24
01A6 .dbline -2
01A6 L18:
01A6 8991 ld R24,y+
01A8 8FBF out 0x3f,R24
01AA 9991 ld R25,y+
01AC 8991 ld R24,y+
01AE .dbline 0 ; func end
01AE 1895 reti
01B0 .dbend
01B0 .dbfunc e USART_INIT _USART_INIT fV
.even
01B0 _USART_INIT::
01B0 .dbline -1
01B0 .dbline 159
01B0 ; }
01B0 ; //*****************************************************
01B0 ; //函数名称:void USART_INIT(void)
01B0 ; //函数功能:8M,波特率9600
01B0 ; //注意事项:
01B0 ; //*****************************************************
01B0 ; void USART_INIT(void)
01B0 ; {
01B0 .dbline 160
01B0 ; UBRR=0X33;//fosc=8mhz,波特率9600
01B0 83E3 ldi R24,51
01B2 89B9 out 0x9,R24
01B4 .dbline 161
01B4 ; UCSRA=0X20;
01B4 80E2 ldi R24,32
01B6 8BB9 out 0xb,R24
01B8 .dbline 162
01B8 ; UCSRC=0X86;
01B8 86E8 ldi R24,134
01BA 80BD out 0x20,R24
01BC .dbline 163
01BC ; UCSRB=0X98;
01BC 88E9 ldi R24,152
01BE 8AB9 out 0xa,R24
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -