📄 cw1.lis
字号:
0046 .dbline 47
0046 ; DDRD = 0x00;
0046 21BA out 0x11,R2
0048 .dbline -2
0048 L11:
0048 .dbline 0 ; func end
0048 0895 ret
004A .dbend
004A .dbfunc e uart0_init _uart0_init fV
.even
004A _uart0_init::
004A .dbline -1
004A .dbline 50
004A ; }
004A ; void uart0_init(void)
004A ; {
004A .dbline 51
004A ; UCSRB = 0x00; //disable while setting baud rate
004A 2224 clr R2
004C 2AB8 out 0xa,R2
004E .dbline 52
004E ; UCSRA = 0x00;
004E 2BB8 out 0xb,R2
0050 .dbline 53
0050 ; UCSRC = BIT(URSEL) | 0x06;
0050 86E8 ldi R24,134
0052 80BD out 0x20,R24
0054 .dbline 54
0054 ; UBRRL = 0x67; //set baud rate lo6719
0054 87E6 ldi R24,103
0056 89B9 out 0x9,R24
0058 .dbline 55
0058 ; UBRRH = 0x00; //set baud rate hi
0058 20BC out 0x20,R2
005A .dbline 56
005A ; UCSRB = 0x08;
005A 88E0 ldi R24,8
005C 8AB9 out 0xa,R24
005E .dbline -2
005E L12:
005E .dbline 0 ; func end
005E 0895 ret
0060 .dbend
0060 .dbfunc e uart_transmit_byte _uart_transmit_byte fV
0060 ; data -> R16
.even
0060 _uart_transmit_byte::
0060 .dbline -1
0060 .dbline 60
0060 ; }
0060 ; //发送单字节字符
0060 ; void uart_transmit_byte( unsigned char data)
0060 ; {
0060 L14:
0060 .dbline 61
0060 L15:
0060 .dbline 61
0060 ; while(!(UCSRA&DATA_REGISTER_EMPTY));
0060 5D9B sbis 0xb,5
0062 FECF rjmp L14
0064 .dbline 62
0064 ; UDR=data;
0064 0CB9 out 0xc,R16
0066 .dbline -2
0066 L13:
0066 .dbline 0 ; func end
0066 0895 ret
0068 .dbsym r data 16 c
0068 .dbend
0068 .dbfunc e timer2_init _timer2_init fV
.even
0068 _timer2_init::
0068 .dbline -1
0068 .dbline 69
0068 ; }
0068 ;
0068 ; //TIMER2 initialize - prescale:8
0068 ; // desired value: 100uSec
0068 ; // actual value: 100.000uSec (0.0%)
0068 ; void timer2_init(void)
0068 ; {
0068 .dbline 70
0068 ; TCCR2 = 0x00; //stop
0068 2224 clr R2
006A 25BC out 0x25,R2
006C .dbline 71
006C ; ASSR = 0x00; //set async mode
006C 22BC out 0x22,R2
006E .dbline 72
006E ; TCNT2 = 0xCE; //setup
006E 8EEC ldi R24,206
0070 84BD out 0x24,R24
0072 .dbline 73
0072 ; OCR2 = 0x32;
0072 82E3 ldi R24,50
0074 83BD out 0x23,R24
0076 .dbline 74
0076 ; TCCR2 = 0x02; //start
0076 82E0 ldi R24,2
0078 85BD out 0x25,R24
007A .dbline -2
007A L17:
007A .dbline 0 ; func end
007A 0895 ret
007C .dbend
.area vector(rom, abs)
.org 20
0014 0C943E00 jmp _timer2_ovf_isr
.area text(rom, con, rel)
007C .dbfile C:\DOCUME~1\Administrator\桌面\无线视频车\程序\cw1.c
007C .dbfunc e timer2_ovf_isr _timer2_ovf_isr fV
.even
007C _timer2_ovf_isr::
007C 0A92 st -y,R0
007E 1A92 st -y,R1
0080 2A92 st -y,R2
0082 3A92 st -y,R3
0084 4A92 st -y,R4
0086 5A92 st -y,R5
0088 8A93 st -y,R24
008A EA93 st -y,R30
008C 0FB6 in R0,0x3f
008E 0A92 st -y,R0
0090 0E940000 xcall push_gset2
0094 .dbline -1
0094 .dbline 79
0094 ; }
0094 ;
0094 ; #pragma interrupt_handler timer2_ovf_isr:6
0094 ; void timer2_ovf_isr(void)
0094 ; {
0094 .dbline 80
0094 ; TCNT2 = 0xCE; //reload counter value
0094 8EEC ldi R24,206
0096 84BD out 0x24,R24
0098 .dbline 81
0098 ; if(count<65535){++count;}
0098 4FEF ldi R20,255
009A 5FEF ldi R21,255
009C 60E0 ldi R22,0
009E 70E0 ldi R23,0
00A0 40900C00 lds R4,_count+2
00A4 50900D00 lds R5,_count+2+1
00A8 20900A00 lds R2,_count
00AC 30900B00 lds R3,_count+1
00B0 2416 cp R2,R20
00B2 3506 cpc R3,R21
00B4 4606 cpc R4,R22
00B6 5706 cpc R5,R23
00B8 80F4 brsh L19
00BA .dbline 81
00BA .dbline 81
00BA 41E0 ldi R20,1
00BC 50E0 ldi R21,0
00BE 60E0 ldi R22,0
00C0 70E0 ldi R23,0
00C2 240E add R2,R20
00C4 351E adc R3,R21
00C6 461E adc R4,R22
00C8 571E adc R5,R23
00CA 30920B00 sts _count+1,R3
00CE 20920A00 sts _count,R2
00D2 50920D00 sts _count+2+1,R5
00D6 40920C00 sts _count+2,R4
00DA .dbline 81
00DA L19:
00DA .dbline 82
00DA 4FEF ldi R20,255
00DC 5FEF ldi R21,255
00DE 60E0 ldi R22,0
00E0 70E0 ldi R23,0
00E2 40900800 lds R4,_count1+2
00E6 50900900 lds R5,_count1+2+1
00EA 20900600 lds R2,_count1
00EE 30900700 lds R3,_count1+1
00F2 2416 cp R2,R20
00F4 3506 cpc R3,R21
00F6 4606 cpc R4,R22
00F8 5706 cpc R5,R23
00FA 80F4 brsh L21
00FC .dbline 82
00FC .dbline 82
00FC 41E0 ldi R20,1
00FE 50E0 ldi R21,0
0100 60E0 ldi R22,0
0102 70E0 ldi R23,0
0104 240E add R2,R20
0106 351E adc R3,R21
0108 461E adc R4,R22
010A 571E adc R5,R23
010C 30920700 sts _count1+1,R3
0110 20920600 sts _count1,R2
0114 50920900 sts _count1+2+1,R5
0118 40920800 sts _count1+2,R4
011C .dbline 82
011C L21:
011C .dbline -2
011C L18:
011C 0E940000 xcall pop_gset2
0120 0990 ld R0,y+
0122 0FBE out 0x3f,R0
0124 E991 ld R30,y+
0126 8991 ld R24,y+
0128 5990 ld R5,y+
012A 4990 ld R4,y+
012C 3990 ld R3,y+
012E 2990 ld R2,y+
0130 1990 ld R1,y+
0132 0990 ld R0,y+
0134 .dbline 0 ; func end
0134 1895 reti
0136 .dbend
0136 .dbfunc e eeprom_writ _eeprom_writ fV
0136 ; sj -> R18
0136 ; dz -> R16
.even
0136 _eeprom_writ::
0136 .dbline -1
0136 .dbline 86
0136 ; if(count1<65535){++count1;}
0136 ; }
0136 ; //==============================================================================
0136 ; void eeprom_writ(uchar dz,uchar sj) //写EEPROM
0136 ; {
0136 .dbline 87
0136 ; CLI(); //清总中断
0136 F894 cli
0138 L24:
0138 .dbline 88
0138 .dbline 88
0138 .dbline 88
0138 L25:
0138 .dbline 88
0138 ; while(EECR & (1<<EEWE)){;}
0138 E199 sbic 0x1c,1
013A FECF rjmp L24
013C .dbline 89
013C ; EEARH=0x00;
013C 2224 clr R2
013E 2FBA out 0x1f,R2
0140 .dbline 90
0140 ; EEARL=dz;
0140 0EBB out 0x1e,R16
0142 .dbline 91
0142 ; EEDR=sj;
0142 2DBB out 0x1d,R18
0144 .dbline 92
0144 ; EECR |= (1<<EEMWE);
0144 E29A sbi 0x1c,2
0146 .dbline 93
0146 ; EECR |= (1<<EEWE);
0146 E19A sbi 0x1c,1
0148 .dbline 94
0148 ; SEI();
0148 7894 sei
014A .dbline -2
014A L23:
014A .dbline 0 ; func end
014A 0895 ret
014C .dbsym r sj 18 c
014C .dbsym r dz 16 c
014C .dbend
014C .dbfunc e eeprom_read _eeprom_read fc
014C ; dz -> R16
.even
014C _eeprom_read::
014C .dbline -1
014C .dbline 98
014C ; }
014C ; //==============================================================================
014C ; uchar eeprom_read(uchar dz) //读EEPROM
014C ; {
014C .dbline 99
014C ; CLI(); //清总中断
014C F894 cli
014E L28:
014E .dbline 100
014E .dbline 100
014E .dbline 100
014E L29:
014E .dbline 100
014E ; while(EECR & (1<<EEWE)){;}
014E E199 sbic 0x1c,1
0150 FECF rjmp L28
0152 .dbline 101
0152 ; EEARH=0x00;
0152 2224 clr R2
0154 2FBA out 0x1f,R2
0156 .dbline 102
0156 ; EEARL=dz;
0156 0EBB out 0x1e,R16
0158 .dbline 103
0158 ; EECR |= (1<<EERE);
0158 E09A sbi 0x1c,0
015A .dbline 104
015A ; SEI();
015A 7894 sei
015C .dbline 105
015C ; return(EEDR);
015C 0DB3 in R16,0x1d
015E .dbline -2
015E L27:
015E .dbline 0 ; func end
015E 0895 ret
0160 .dbsym r dz 16 c
0160 .dbend
0160 .dbfunc e init_devices _init_devices fV
.even
0160 _init_devices::
0160 .dbline -1
0160 .dbline 108
0160 ; }
0160 ; void init_devices(void)
0160 ; {
0160 .dbline 110
0160 ; //stop errant interrupts until set up
0160 ; CLI(); //disable all interrupts
0160 F894 cli
0162 .dbline 111
0162 ; port_init();
0162 67DF xcall _port_init
0164 .dbline 112
0164 ; timer2_init();
0164 81DF xcall _timer2_init
0166 .dbline 113
0166 ; uart0_init();
0166 71DF xcall _uart0_init
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -