📄 main.s
字号:
.module main.c
.area text(rom, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\LCU904~1\固件程序\main.c
.dbfunc e port_init _port_init fV
.even
_port_init::
.dbline -1
.dbline 15
; //ICC-AVR application builder : 2008-5-9 21:38:30
; // Target : M16
; // Crystal: 16.000Mhz
;
; #include"include.h"
; #include "main.h"
;
; //端口初始化
; //数据寄存器 PORTx 读写寄存器
; //引脚配置为输入PORTx=1 上拉电阻使能 \\PORTx=0 关闭上拉电阻 \\复位时引脚为高阻态
; //引脚配置为输出PORTx=1 引脚输出高电平"1" \\PORTx=0 引脚输出低电平"0"
; //数据方向寄存器 DDRx 读写寄存器 =1引脚配置为输出 =0引脚配置为输入
; //端口输入引脚 PINx 只读寄存器
; void port_init(void)
; {
.dbline 17
; /*PA上拉电阻使能 引脚配置为输入*/
; PORTA = 0xFF;
ldi R24,255
out 0x1b,R24
.dbline 18
; DDRA = 0x00;
clr R2
out 0x1a,R2
.dbline 20
; /**/
; PORTB = 0x20;
ldi R24,32
out 0x18,R24
.dbline 21
; DDRB |= (1<<5)|(1<<7);
in R24,0x17
ori R24,160
out 0x17,R24
.dbline 23
; /*PC上拉电阻使能 引脚配置为输入*/
; PORTC = 0xFF; //m103 output only
ldi R24,255
out 0x15,R24
.dbline 24
; DDRC = 0x00;
out 0x14,R2
.dbline 26
; /**/
; PORTD = 0x00;
out 0x12,R2
.dbline 27
; DDRD = 0x20;
ldi R24,32
out 0x11,R24
.dbline -2
L2:
.dbline 0 ; func end
ret
.dbend
.dbfunc e init_devices _init_devices fV
.even
_init_devices::
.dbline -1
.dbline 32
; }
;
; //call this routine to initialize all peripherals
; void init_devices(void)
; {
.dbline 34
; //stop errant interrupts until set up
; CLI(); //disable all interrupts
cli
.dbline 35
; port_init();
xcall _port_init
.dbline 36
; Uart0_Init();
xcall _Uart0_Init
.dbline 37
; Timer0_init();
xcall _Timer0_init
.dbline 38
; MCUCR = 0x00;
clr R2
out 0x35,R2
.dbline 39
; GICR = 0x00;
out 0x3b,R2
.dbline 40
; TIMSK = 0x01; //timer interrupt sources
ldi R24,1
out 0x39,R24
.dbline 41
; Power_LED_Drown();
cbi 0x11,7
.dbline 42
; SEI(); //re-enable interrupts
sei
.dbline -2
L3:
.dbline 0 ; func end
ret
.dbend
.dbfunc e DelaymS _DelaymS fV
; i -> R20,R21
; cnt -> R16,R17
.even
_DelaymS::
st -y,R20
st -y,R21
.dbline -1
.dbline 48
; //all peripherals are now initialized
; }
;
;
; void DelaymS(unsigned int cnt)
; {
L5:
.dbline 50
; unsigned int i;
; do{
.dbline 51
; i = 5000;
ldi R20,5000
ldi R21,19
L8:
.dbline 52
; do{
.dbline 53
; asm("nop");
nop
.dbline 54
; asm("nop");
nop
.dbline 55
; } while(--i);
L9:
.dbline 55
movw R24,R20
sbiw R24,1
movw R20,R24
cpi R20,0
cpc R20,R21
brne L8
X0:
.dbline 56
; }while (--cnt);
L6:
.dbline 56
movw R24,R16
sbiw R24,1
movw R16,R24
cpi R16,0
cpc R16,R17
brne L5
X1:
.dbline -2
L4:
.dbline 0 ; func end
ld R21,y+
ld R20,y+
ret
.dbsym r i 20 i
.dbsym r cnt 16 i
.dbend
.dbfunc e main _main fV
.dbstruct 0 4 data
.dbfield 0 pc_rxd c
.dbfield 1 pc_txd c
.dbfield 2 c51_rxd c
.dbfield 3 c51_txd c
.dbend
.dbstruct 0 260 Device51_StructOfProtocol
.dbfield 0 Address c
.dbfield 1 Length i
.dbfield 3 Command c
.dbfield 4 Data A[256:256]c
.dbend
.dbstruct 0 260 StructOfProtocol
.dbfield 0 Address c
.dbfield 1 Length i
.dbfield 3 Command c
.dbfield 4 Data A[256:256]c
.dbend
; i -> <dead>
; p_buf -> R20,R21
; C51_buf -> R20,R21
; communication -> R10,R11
.even
_main::
.dbline -1
.dbline 62
; }
;
;
;
; void main(void)
; {
.dbline 67
; unsigned int i;
; struct StructOfProtocol *p_buf;
; struct Device51_StructOfProtocol *C51_buf;
; struct data *communication;
; p_buf = (struct StructOfProtocol *)Buffer485;
.dbline 69
;
; C51_buf = (struct Device51_StructOfProtocol *)C51Buffer485;
ldi R20,<_C51Buffer485
ldi R21,>_C51Buffer485
.dbline 70
; init_devices();
xcall _init_devices
.dbline 71
; Device_Address = 0x01;
ldi R24,1
sts _Device_Address,R24
.dbline 73
;
; C51_buf->Address = 0x01;
movw R30,R20
std z+0,R24
.dbline 74
; C51_buf->Command = 0x02;
ldi R24,2
std z+3,R24
.dbline 75
; C51_buf->Data[0] = 0x03;
ldi R24,3
std z+4,R24
.dbline 76
; C51_buf->Data[1] = 0x04;
ldi R24,4
std z+5,R24
.dbline 77
; C51_buf->Data[2] = 0x05;
ldi R24,5
std z+6,R24
.dbline 78
; C51_buf->Data[3] = 0x06;
ldi R24,6
std z+7,R24
.dbline 79
; C51_buf->Length = 0x05;
ldi R24,5
ldi R25,0
std z+2,R25
std z+1,R24
.dbline 81
;
; Power_LED_Light();
sbi 0x11,7
xjmp L13
L12:
.dbline 84
; // BUS_SendPacket_51Device();
; while(1)
; {
.dbline 85
; if(communication->pc_rxd)
movw R30,R10
ldd R2,z+0
tst R2
breq L15
X2:
.dbline 86
; {
.dbline 87
; communication->pc_rxd = 0;
clr R2
std z+0,R2
.dbline 88
; max485_on();
sbi 0x12,5
.dbline 89
; UDR = 0x31;
ldi R24,49
out 0xc,R24
.dbline 90
; }
L15:
.dbline 91
; }
L13:
.dbline 83
xjmp L12
X3:
.dbline -2
L11:
.dbline 0 ; func end
ret
.dbsym l i 1 i
.dbsym r p_buf 20 pS[StructOfProtocol]
.dbsym r C51_buf 20 pS[Device51_StructOfProtocol]
.dbsym r communication 10 pS[data]
.dbend
.area bss(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\LCU904~1\固件程序\main.c
_ReadSwitchPINC::
.blkb 1
.dbfile C:\DOCUME~1\Administrator\桌面\LCU904~1\固件程序\main.h
.dbsym e ReadSwitchPINC _ReadSwitchPINC c
_ReadSwitchPINA::
.blkb 1
.dbsym e ReadSwitchPINA _ReadSwitchPINA c
_FireSwitchStatus::
.blkb 1
.dbsym e FireSwitchStatus _FireSwitchStatus c
_StopSwitchStatus::
.blkb 1
.dbsym e StopSwitchStatus _StopSwitchStatus c
_WorkingMode::
.blkb 1
.dbsym e WorkingMode _WorkingMode c
_SecondOfTime::
.blkb 2
.dbsym e SecondOfTime _SecondOfTime i
_DayOfTime::
.blkb 2
.dbsym e DayOfTime _DayOfTime i
_Device_Address::
.blkb 1
.dbsym e Device_Address _Device_Address c
_Cyc_manage::
.blkb 1
.dbsym e Cyc_manage _Cyc_manage c
_C51Buffer485::
.blkb 256
.dbsym e C51Buffer485 _C51Buffer485 A[256:256]c
_Buffer485::
.blkb 256
.dbsym e Buffer485 _Buffer485 A[256:256]c
_Read74HC165Switch::
.blkb 3
.dbsym e Read74HC165Switch _Read74HC165Switch A[3:3]c
; }
;
; /*
; {
; Cyc_manage = 0x02;
; for(i=1;i<9;i*=2)
; {
; switch(Cyc_manage&i)
; {
; case 1://处理跟PC通讯部分
; communication_with_pc();
; break;
; case 2://处理跟51控制板通讯部分
; communication_with_51director();
; break;
; case 4://取数据发送给51板
; update_data_51director();
; break;
; case 8://检查按键发送给51控制板
; communication_ReadSwitch();
; break;
; default:
; break;
; }
; }
; } */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -