📄 oput.lis
字号:
0124 .dbline -2
0124 L9:
0124 8991 ld R24,y+
0126 8FBF out 0x3f,R24
0128 9991 ld R25,y+
012A 8991 ld R24,y+
012C .dbline 0 ; func end
012C 1895 reti
012E .dbend
012E .dbfunc e init_devices _init_devices fV
.even
012E _init_devices::
012E .dbline -1
012E .dbline 109
012E ; //compare occured TCNT0=OCR0
012E ; }
012E ; //======================================================速度中断处理函数
012E ;
012E ; //======================================================CPU初始化
012E ; //call this routine to initialise all peripherals
012E ; void init_devices(void)
012E ; {
012E .dbline 111
012E ; //stop errant interrupts until set up
012E ; CLI(); //disable all interrupts
012E F894 cli
0130 .dbline 112
0130 ; XDIV = 0x00; //xtal divider//系统时钟分频控制寄存器
0130 2224 clr R2
0132 2CBE out 0x3c,R2
0134 .dbline 113
0134 ; XMCRA = 0x0E; //external memory//外部存储器控制寄存器
0134 8EE0 ldi R24,14
0136 80936D00 sts 109,R24
013A .dbline 114
013A ; XMCRB = 0x80;
013A 80E8 ldi R24,128
013C 80936C00 sts 108,R24
0140 .dbline 115
0140 ; mapping_init();
0140 5FDF xcall _mapping_init
0142 .dbline 116
0142 ; port_init();
0142 5FDF xcall _port_init
0144 .dbline 119
0144 ; //watchdog_init();
0144 ; // timer1_init();
0144 ; timer0_init();
0144 B2DF xcall _timer0_init
0146 .dbline 123
0146 ;
0146 ; //adc_init();
0146 ;
0146 ; MCUCR = 0xC0;//MCU控制寄存器
0146 80EC ldi R24,192
0148 85BF out 0x35,R24
014A .dbline 124
014A ; EICRA = 0x0A; //extended ext ints//外部中断控制寄存器
014A 8AE0 ldi R24,10
014C 80936A00 sts 106,R24
0150 .dbline 125
0150 ; EICRB = 0x0F; //extended ext ints
0150 8FE0 ldi R24,15
0152 8ABF out 0x3a,R24
0154 .dbline 126
0154 ; EIMSK = 0x33; //0x03 extended ext enable
0154 83E3 ldi R24,51
0156 89BF out 0x39,R24
0158 .dbline 127
0158 ; TIMSK = 0x12; //timer interrupt sources 01:time0
0158 82E1 ldi R24,18
015A 87BF out 0x37,R24
015C .dbline 128
015C ; ETIMSK = 0x00; //extended timer interrupt sources
015C 2224 clr R2
015E 20927D00 sts 125,R2
0162 .dbline 129
0162 ; uart0_init();
0162 6EDF xcall _uart0_init
0164 .dbline 130
0164 ; SEI(); //re-enable interrupts
0164 7894 sei
0166 .dbline -2
0166 L10:
0166 .dbline 0 ; func end
0166 0895 ret
0168 .dbend
0168 .dbfunc e WatchDog _WatchDog fV
.even
0168 _WatchDog::
0168 .dbline -1
0168 .dbline 135
0168 ; // MyselfCan0Addr=1;
0168 ; // MyselfCan1Addr=2;
0168 ; }
0168 ; //======================================================看门狗处理函数
0168 ; void WatchDog(void){
0168 .dbline 136
0168 ; DDRE|= 0x08;
0168 139A sbi 0x2,3
016A .dbline 137
016A ; PORTE&= 0xF7;
016A 83B1 in R24,0x3
016C 877F andi R24,247
016E 83B9 out 0x3,R24
0170 .dbline 138
0170 ; PORTE|= 0x08;
0170 1B9A sbi 0x3,3
0172 .dbline 139
0172 ; PORTE&= 0xF7;
0172 83B1 in R24,0x3
0174 877F andi R24,247
0176 83B9 out 0x3,R24
0178 .dbline 140
0178 ; PORTE|= 0x08;
0178 1B9A sbi 0x3,3
017A .dbline 141
017A ; PORTE&= 0xF7;
017A 83B1 in R24,0x3
017C 877F andi R24,247
017E 83B9 out 0x3,R24
0180 .dbline 142
0180 ; PORTE|= 0x08;
0180 1B9A sbi 0x3,3
0182 .dbline 143
0182 ; WDR();
0182 A895 wdr
0184 .dbline -2
0184 L11:
0184 .dbline 0 ; func end
0184 0895 ret
0186 .dbend
0186 .dbfunc e set_value _set_value fV
.even
0186 _set_value::
0186 .dbline -1
0186 .dbline 149
0186 ; }
0186 ;
0186 ;
0186 ;
0186 ; //===============================================初始设置
0186 ; void set_value(void){
0186 .dbline 153
0186 ;
0186 ; // V_average_incept.Word=0;
0186 ; // Cr_average_incept.Word=0;
0186 ; OutputByte0Reg = 255;
0186 8FEF ldi R24,255
0188 8093C901 sts _OutputByte0Reg,R24
018C .dbline 154
018C ; OutputByte1Reg = 255;
018C 8093C801 sts _OutputByte1Reg,R24
0190 .dbline 155
0190 ; OutputByte2Reg = 255;
0190 8093C701 sts _OutputByte2Reg,R24
0194 .dbline -2
0194 L12:
0194 .dbline 0 ; func end
0194 0895 ret
0196 .dbend
0196 .dbfunc e tx0_int_to_bcd _tx0_int_to_bcd fV
0196 ; head -> R22
0196 ; j -> R10
0196 ; i -> R20,R21
.even
0196 _tx0_int_to_bcd::
0196 0E940000 xcall push_gset3
019A A801 movw R20,R16
019C .dbline -1
019C .dbline 162
019C ; }
019C ;
019C ;
019C ; //将int型变量转换为bcd码,并填充到TxBuffer0[]中
019C ; /********************************************************************************/
019C ; void tx0_int_to_bcd(int i)
019C ; {
019C .dbline 163
019C ; UC j,head=0;
019C 6627 clr R22
019E .dbline 164
019E ; if(i<0){
019E 4030 cpi R20,0
01A0 E0E0 ldi R30,0
01A2 5E07 cpc R21,R30
01A4 9CF4 brge L14
01A6 .dbline 164
01A6 .dbline 165
01A6 ; i=-i;
01A6 4095 com R20
01A8 5095 com R21
01AA 4F5F subi R20,0xFF
01AC 5F4F sbci R21,0xFF
01AE .dbline 166
01AE ; TxBuffer0[TxOperateSp0++]='-';
01AE 20900100 lds R2,_TxOperateSp0
01B2 3324 clr R3
01B4 822D mov R24,R2
01B6 8F5F subi R24,255 ; addi 1
01B8 80930100 sts _TxOperateSp0,R24
01BC 80E0 ldi R24,<_TxBuffer0
01BE 90E0 ldi R25,>_TxBuffer0
01C0 E22D mov R30,R2
01C2 FF27 clr R31
01C4 E80F add R30,R24
01C6 F91F adc R31,R25
01C8 8DE2 ldi R24,45
01CA 8083 std z+0,R24
01CC .dbline 167
01CC ; }
01CC L14:
01CC .dbline 168
01CC ; j=i/10000;i%=10000;if(j){TxBuffer0[TxOperateSp0++]=j+0x30;head=1;}
01CC 20E1 ldi R18,10000
01CE 37E2 ldi R19,39
01D0 8A01 movw R16,R20
01D2 0E940000 xcall div16s
01D6 A02E mov R10,R16
01D8 .dbline 168
01D8 20E1 ldi R18,10000
01DA 37E2 ldi R19,39
01DC 8A01 movw R16,R20
01DE 0E940000 xcall mod16s
01E2 A801 movw R20,R16
01E4 .dbline 168
01E4 AA20 tst R10
01E6 89F0 breq L16
01E8 .dbline 168
01E8 .dbline 168
01E8 20900100 lds R2,_TxOperateSp0
01EC 3324 clr R3
01EE 822D mov R24,R2
01F0 8F5F subi R24,255 ; addi 1
01F2 80930100 sts _TxOperateSp0,R24
01F6 80E0 ldi R24,<_TxBuffer0
01F8 90E0 ldi R25,>_TxBuffer0
01FA E22D mov R30,R2
01FC FF27 clr R31
01FE E80F add R30,R24
0200 F91F adc R31,R25
0202 8A2D mov R24,R10
0204 805D subi R24,208 ; addi 48
0206 8083 std z+0,R24
0208 .dbline 168
0208 61E0 ldi R22,1
020A .dbline 168
020A L16:
020A .dbline 169
020A 28EE ldi R18,1000
020C 33E0 ldi R19,3
020E 8A01 movw R16,R20
0210 0E940000 xcall div16s
0214 A02E mov R10,R16
0216 .dbline 169
0216 28EE ldi R18,1000
0218 33E0 ldi R19,3
021A 8A01 movw R16,R20
021C 0E940000 xcall mod16s
0220 A801 movw R20,R16
0222 .dbline 169
0222 AA20 tst R10
0224 11F4 brne L20
0226 6623 tst R22
0228 89F0 breq L18
022A L20:
022A .dbline 169
022A ; j=i/1000;i%=1000;if(j||head){TxBuffer0[TxOperateSp0++]=j+0x30;head=1;}
022A .dbline 169
022A 20900100 lds R2,_TxOperateSp0
022E 3324 clr R3
0230 822D mov R24,R2
0232 8F5F subi R24,255 ; addi 1
0234 80930100 sts _TxOperateSp0,R24
0238 80E0 ldi R24,<_TxBuffer0
023A 90E0 ldi R25,>_TxBuffer0
023C E22D mov R30,R2
023E FF27 clr R31
0240 E80F add R30,R24
0242 F91F adc R31,R25
0244 8A2D mov R24,R10
0246 805D subi R24,208 ; addi 48
0248 8083 std z+0,R24
024A .dbline 169
024A 61E0 ldi R22,1
024C .dbline 169
024C L18:
024C .dbline 170
024C 24E6 ldi R18,100
024E 30E0 ldi R19,0
0250 8A01 movw R16,R20
0252 0E940000 xcall div16s
0256 A02E mov R10,R16
0258 .dbline 170
0258 24E6 ldi R18,100
025A 30E0 ldi R19,0
025C 8A01 movw R16,R20
025E 0E940000 xcall mod16s
0262 A801 movw R20,R16
0264 .dbline 170
0264 AA20 tst R10
0266 11F4 brne L23
0268 6623 tst R22
026A 89F0 breq L21
026C L23:
026C .dbline 170
026C ; j=i/100;i%=100;if(j||head){TxBuffer0[TxOperateSp0++]=j+0x30;head=1;}
026C .dbline 170
026C 20900100 lds R2,_TxOperateSp0
0270 3324 clr R3
0272 822D mov R24,R2
0274 8F5F subi R24,255 ; addi 1
0276 80930100 sts _TxOperateSp0,R24
027A 80E0 ldi R24,<_TxBuffer0
027C 90E0 ldi R25,>_TxBuffer0
027E E22D mov R30,R2
0280 FF27 clr R31
0282 E80F add R30,R24
0284 F91F adc R31,R25
0286 8A2D mov R24,R10
0288 805D subi R24,208 ; addi 48
028A 8083 std z+0,R24
028C .dbline 170
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -