📄 cw1.s
字号:
.module cw1.c
.area data(ram, con, rel)
_data::
.blkb 4
.area idata
.word 0,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\无线视频车\程序\cw1.c
.dbsym e data _data l
_forward::
.blkb 2
.area idata
.byte 0,127
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\无线视频车\程序\cw1.c
.blkb 2
.area idata
.byte 127,255
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\无线视频车\程序\cw1.c
.blkb 2
.area idata
.byte 255,251
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\无线视频车\程序\cw1.c
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\无线视频车\程序\cw1.c
.blkb 2
.area idata
.byte 127,255
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\无线视频车\程序\cw1.c
.blkb 2
.area idata
.byte 255,255
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\无线视频车\程序\cw1.c
.blkb 2
.area idata
.byte 253,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\无线视频车\程序\cw1.c
.dbsym e forward _forward A[14:14]c
_back::
.blkb 2
.area idata
.byte 0,127
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\无线视频车\程序\cw1.c
.blkb 2
.area idata
.byte 127,255
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\无线视频车\程序\cw1.c
.blkb 2
.area idata
.byte 255,253
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\无线视频车\程序\cw1.c
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\无线视频车\程序\cw1.c
.blkb 2
.area idata
.byte 127,255
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\无线视频车\程序\cw1.c
.blkb 2
.area idata
.byte 255,255
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\无线视频车\程序\cw1.c
.blkb 2
.area idata
.byte 253,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\无线视频车\程序\cw1.c
.dbsym e back _back A[14:14]c
_UP::
.blkb 2
.area idata
.byte 255,1
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\无线视频车\程序\cw1.c
.blkb 2
.area idata
.byte 0,8
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\无线视频车\程序\cw1.c
.blkb 2
.area idata
.byte 0,47
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\无线视频车\程序\cw1.c
.blkb 1
.area idata
.byte 56
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\无线视频车\程序\cw1.c
.dbsym e UP _UP A[7:7]c
_DOWN::
.blkb 2
.area idata
.byte 255,1
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\无线视频车\程序\cw1.c
.blkb 2
.area idata
.byte 0,16
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\无线视频车\程序\cw1.c
.blkb 2
.area idata
.byte 0,47
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\无线视频车\程序\cw1.c
.blkb 1
.area idata
.byte 64
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\无线视频车\程序\cw1.c
.dbsym e DOWN _DOWN A[7:7]c
_left::
.blkb 2
.area idata
.byte 255,1
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\无线视频车\程序\cw1.c
.blkb 2
.area idata
.byte 0,4
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\无线视频车\程序\cw1.c
.blkb 2
.area idata
.byte 63,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\无线视频车\程序\cw1.c
.blkb 1
.area idata
.byte 'D
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\无线视频车\程序\cw1.c
.dbsym e left _left A[7:7]c
_right::
.blkb 2
.area idata
.byte 255,1
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\无线视频车\程序\cw1.c
.blkb 2
.area idata
.byte 0,2
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\无线视频车\程序\cw1.c
.blkb 2
.area idata
.byte 63,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\无线视频车\程序\cw1.c
.blkb 1
.area idata
.byte 'B
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\无线视频车\程序\cw1.c
.dbsym e right _right A[7:7]c
_STOP::
.blkb 2
.area idata
.byte 255,1
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\无线视频车\程序\cw1.c
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\无线视频车\程序\cw1.c
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\无线视频车\程序\cw1.c
.blkb 1
.area idata
.byte 1
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\无线视频车\程序\cw1.c
.dbsym e STOP _STOP A[7:7]c
.area text(rom, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\无线视频车\程序\cw1.c
.dbfunc e delay_ms _delay_ms fV
; i -> R16,R17
.even
_delay_ms::
.dbline -1
.dbline 23
; #include "iom32v.h"
; #include "macros.h"
; #define wuxian_js PA3 //无线接收
; #define power_led PC6 //电源指示灯
; #define study_key PC1 //学习键
; #define UDRE 5 //发送缓冲区为空
; #define DATA_REGISTER_EMPTY (1<<UDRE)
; #define uchar unsigned char
; #define ulong unsigned long
; ulong count,count1; //定时器2计数器
; uchar code[3],code1[3];
; ulong data=0;
; uchar forward[14]={0x00,0x7f,0x7f,0xff,0xff,0xfb,0x00,0x00,0x7f,
; 0xff,0xff,0xff,0xfd,0x00};
; uchar back[14]={0x00,0x7f,0x7f,0xff,0xff,0xfd,0x00,0x00,0x7f,0xff,
; 0xff,0xff,0xfd,0x00};
; uchar UP[7]={0xff,0x01,0x00,0x08,0x00,0x2f,0x38};
; uchar DOWN[7]={0xff,0x01,0x00,0x10,0x00,0x2f,0x40};
; uchar left[7]={0xff,0x01,0x00,0x04,0x3f,0x00,0x44};
; uchar right[7]={0xff,0x01,0x00,0x02,0x3f,0x00,0x42};
; uchar STOP[7]={0xff,0x01,0x00,0x00,0x00,0x00,0x01};
; void delay_ms(void) //毫秒延时
; {
.dbline 25
; unsigned int i;
; for (i=0;i<140;i++)
clr R16
clr R17
xjmp L5
L2:
.dbline 26
.dbline 27
L3:
.dbline 25
subi R16,255 ; offset = 1
sbci R17,255
L5:
.dbline 25
cpi R16,140
ldi R30,0
cpc R17,R30
brlo L2
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbsym r i 16 i
.dbend
.dbfunc e delay_nms _delay_nms fV
; i -> R20,R21
; n -> R22,R23
.even
_delay_nms::
xcall push_gset2
movw R22,R16
.dbline -1
.dbline 31
; {
; }
; }
;
; void delay_nms(unsigned int n) //延时周期
; {
.dbline 33
; unsigned int i;
; for (i=0;i<n;i++)
clr R20
clr R21
xjmp L10
L7:
.dbline 34
.dbline 35
xcall _delay_ms
.dbline 36
L8:
.dbline 33
subi R20,255 ; offset = 1
sbci R21,255
L10:
.dbline 33
cp R20,R22
cpc R21,R23
brlo L7
.dbline -2
L6:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r i 20 i
.dbsym r n 22 i
.dbend
.dbfunc e port_init _port_init fV
.even
_port_init::
.dbline -1
.dbline 39
; {
; delay_ms();
; }
; }
; void port_init(void)
; {
.dbline 40
; PORTA = 0xff;
ldi R24,255
out 0x1b,R24
.dbline 41
; DDRA = 0x00;
clr R2
out 0x1a,R2
.dbline 42
; PORTB = 0x00;
out 0x18,R2
.dbline 43
; DDRB = 0x00;
out 0x17,R2
.dbline 44
; PORTC = 0x01; //m103 output only
ldi R24,1
out 0x15,R24
.dbline 45
; DDRC = 0x00;
out 0x14,R2
.dbline 46
; PORTD = 0x00;
out 0x12,R2
.dbline 47
; DDRD = 0x00;
out 0x11,R2
.dbline -2
L11:
.dbline 0 ; func end
ret
.dbend
.dbfunc e uart0_init _uart0_init fV
.even
_uart0_init::
.dbline -1
.dbline 50
; }
; void uart0_init(void)
; {
.dbline 51
; UCSRB = 0x00; //disable while setting baud rate
clr R2
out 0xa,R2
.dbline 52
; UCSRA = 0x00;
out 0xb,R2
.dbline 53
; UCSRC = BIT(URSEL) | 0x06;
ldi R24,134
out 0x20,R24
.dbline 54
; UBRRL = 0x67; //set baud rate lo6719
ldi R24,103
out 0x9,R24
.dbline 55
; UBRRH = 0x00; //set baud rate hi
out 0x20,R2
.dbline 56
; UCSRB = 0x08;
ldi R24,8
out 0xa,R24
.dbline -2
L12:
.dbline 0 ; func end
ret
.dbend
.dbfunc e uart_transmit_byte _uart_transmit_byte fV
; data -> R16
.even
_uart_transmit_byte::
.dbline -1
.dbline 60
; }
; //发送单字节字符
; void uart_transmit_byte( unsigned char data)
; {
L14:
.dbline 61
L15:
.dbline 61
; while(!(UCSRA&DATA_REGISTER_EMPTY));
sbis 0xb,5
rjmp L14
.dbline 62
; UDR=data;
out 0xc,R16
.dbline -2
L13:
.dbline 0 ; func end
ret
.dbsym r data 16 c
.dbend
.dbfunc e timer2_init _timer2_init fV
.even
_timer2_init::
.dbline -1
.dbline 69
; }
;
; //TIMER2 initialize - prescale:8
; // desired value: 100uSec
; // actual value: 100.000uSec (0.0%)
; void timer2_init(void)
; {
.dbline 70
; TCCR2 = 0x00; //stop
clr R2
out 0x25,R2
.dbline 71
; ASSR = 0x00; //set async mode
out 0x22,R2
.dbline 72
; TCNT2 = 0xCE; //setup
ldi R24,206
out 0x24,R24
.dbline 73
; OCR2 = 0x32;
ldi R24,50
out 0x23,R24
.dbline 74
; TCCR2 = 0x02; //start
ldi R24,2
out 0x25,R24
.dbline -2
L17:
.dbline 0 ; func end
ret
.dbend
.area vector(rom, abs)
.org 20
jmp _timer2_ovf_isr
.area text(rom, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\无线视频车\程序\cw1.c
.dbfunc e timer2_ovf_isr _timer2_ovf_isr fV
.even
_timer2_ovf_isr::
st -y,R0
st -y,R1
st -y,R2
st -y,R3
st -y,R4
st -y,R5
st -y,R24
st -y,R30
in R0,0x3f
st -y,R0
xcall push_gset2
.dbline -1
.dbline 79
; }
;
; #pragma interrupt_handler timer2_ovf_isr:6
; void timer2_ovf_isr(void)
; {
.dbline 80
; TCNT2 = 0xCE; //reload counter value
ldi R24,206
out 0x24,R24
.dbline 81
; if(count<65535){++count;}
ldi R20,255
ldi R21,255
ldi R22,0
ldi R23,0
lds R4,_count+2
lds R5,_count+2+1
lds R2,_count
lds R3,_count+1
cp R2,R20
cpc R3,R21
cpc R4,R22
cpc R5,R23
brsh L19
.dbline 81
.dbline 81
ldi R20,1
ldi R21,0
ldi R22,0
ldi R23,0
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
sts _count+1,R3
sts _count,R2
sts _count+2+1,R5
sts _count+2,R4
.dbline 81
L19:
.dbline 82
ldi R20,255
ldi R21,255
ldi R22,0
ldi R23,0
lds R4,_count1+2
lds R5,_count1+2+1
lds R2,_count1
lds R3,_count1+1
cp R2,R20
cpc R3,R21
cpc R4,R22
cpc R5,R23
brsh L21
.dbline 82
.dbline 82
ldi R20,1
ldi R21,0
ldi R22,0
ldi R23,0
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
sts _count1+1,R3
sts _count1,R2
sts _count1+2+1,R5
sts _count1+2,R4
.dbline 82
L21:
.dbline -2
L18:
xcall pop_gset2
ld R0,y+
out 0x3f,R0
ld R30,y+
ld R24,y+
ld R5,y+
ld R4,y+
ld R3,y+
ld R2,y+
ld R1,y+
ld R0,y+
.dbline 0 ; func end
reti
.dbend
.dbfunc e eeprom_writ _eeprom_writ fV
; sj -> R18
; dz -> R16
.even
_eeprom_writ::
.dbline -1
.dbline 86
; if(count1<65535){++count1;}
; }
; //==============================================================================
; void eeprom_writ(uchar dz,uchar sj) //写EEPROM
; {
.dbline 87
; CLI(); //清总中断
cli
L24:
.dbline 88
.dbline 88
.dbline 88
L25:
.dbline 88
; while(EECR & (1<<EEWE)){;}
sbic 0x1c,1
rjmp L24
.dbline 89
; EEARH=0x00;
clr R2
out 0x1f,R2
.dbline 90
; EEARL=dz;
out 0x1e,R16
.dbline 91
; EEDR=sj;
out 0x1d,R18
.dbline 92
; EECR |= (1<<EEMWE);
sbi 0x1c,2
.dbline 93
; EECR |= (1<<EEWE);
sbi 0x1c,1
.dbline 94
; SEI();
sei
.dbline -2
L23:
.dbline 0 ; func end
ret
.dbsym r sj 18 c
.dbsym r dz 16 c
.dbend
.dbfunc e eeprom_read _eeprom_read fc
; dz -> R16
.even
_eeprom_read::
.dbline -1
.dbline 98
; }
; //==============================================================================
; uchar eeprom_read(uchar dz) //读EEPROM
; {
.dbline 99
; CLI(); //清总中断
cli
L28:
.dbline 100
.dbline 100
.dbline 100
L29:
.dbline 100
; while(EECR & (1<<EEWE)){;}
sbic 0x1c,1
rjmp L28
.dbline 101
; EEARH=0x00;
clr R2
out 0x1f,R2
.dbline 102
; EEARL=dz;
out 0x1e,R16
.dbline 103
; EECR |= (1<<EERE);
sbi 0x1c,0
.dbline 104
; SEI();
sei
.dbline 105
; return(EEDR);
in R16,0x1d
.dbline -2
L27:
.dbline 0 ; func end
ret
.dbsym r dz 16 c
.dbend
.dbfunc e init_devices _init_devices fV
.even
_init_devices::
.dbline -1
.dbline 108
; }
; void init_devices(void)
; {
.dbline 110
; //stop errant interrupts until set up
; CLI(); //disable all interrupts
cli
.dbline 111
; port_init();
xcall _port_init
.dbline 112
; timer2_init();
xcall _timer2_init
.dbline 113
; uart0_init();
xcall _uart0_init
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -