📄 main.lis
字号:
.module main.c
.area text(rom, con, rel)
0000 .dbfile C:\DOCUME~1\Administrator\桌面\LCU904~1\固件程序\main.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 15
0000 ; //ICC-AVR application builder : 2008-5-9 21:38:30
0000 ; // Target : M16
0000 ; // Crystal: 16.000Mhz
0000 ;
0000 ; #include"include.h"
0000 ; #include "main.h"
0000 ;
0000 ; //端口初始化
0000 ; //数据寄存器 PORTx 读写寄存器
0000 ; //引脚配置为输入PORTx=1 上拉电阻使能 \\PORTx=0 关闭上拉电阻 \\复位时引脚为高阻态
0000 ; //引脚配置为输出PORTx=1 引脚输出高电平"1" \\PORTx=0 引脚输出低电平"0"
0000 ; //数据方向寄存器 DDRx 读写寄存器 =1引脚配置为输出 =0引脚配置为输入
0000 ; //端口输入引脚 PINx 只读寄存器
0000 ; void port_init(void)
0000 ; {
0000 .dbline 17
0000 ; /*PA上拉电阻使能 引脚配置为输入*/
0000 ; PORTA = 0xFF;
0000 8FEF ldi R24,255
0002 8BBB out 0x1b,R24
0004 .dbline 18
0004 ; DDRA = 0x00;
0004 2224 clr R2
0006 2ABA out 0x1a,R2
0008 .dbline 20
0008 ; /**/
0008 ; PORTB = 0x20;
0008 80E2 ldi R24,32
000A 88BB out 0x18,R24
000C .dbline 21
000C ; DDRB |= (1<<5)|(1<<7);
000C 87B3 in R24,0x17
000E 806A ori R24,160
0010 87BB out 0x17,R24
0012 .dbline 23
0012 ; /*PC上拉电阻使能 引脚配置为输入*/
0012 ; PORTC = 0xFF; //m103 output only
0012 8FEF ldi R24,255
0014 85BB out 0x15,R24
0016 .dbline 24
0016 ; DDRC = 0x00;
0016 24BA out 0x14,R2
0018 .dbline 26
0018 ; /**/
0018 ; PORTD = 0x00;
0018 22BA out 0x12,R2
001A .dbline 27
001A ; DDRD = 0x20;
001A 80E2 ldi R24,32
001C 81BB out 0x11,R24
001E .dbline -2
001E L2:
001E .dbline 0 ; func end
001E 0895 ret
0020 .dbend
0020 .dbfunc e init_devices _init_devices fV
.even
0020 _init_devices::
0020 .dbline -1
0020 .dbline 32
0020 ; }
0020 ;
0020 ; //call this routine to initialize all peripherals
0020 ; void init_devices(void)
0020 ; {
0020 .dbline 34
0020 ; //stop errant interrupts until set up
0020 ; CLI(); //disable all interrupts
0020 F894 cli
0022 .dbline 35
0022 ; port_init();
0022 EEDF xcall _port_init
0024 .dbline 36
0024 ; Uart0_Init();
0024 0E940000 xcall _Uart0_Init
0028 .dbline 37
0028 ; Timer0_init();
0028 0E940000 xcall _Timer0_init
002C .dbline 38
002C ; MCUCR = 0x00;
002C 2224 clr R2
002E 25BE out 0x35,R2
0030 .dbline 39
0030 ; GICR = 0x00;
0030 2BBE out 0x3b,R2
0032 .dbline 40
0032 ; TIMSK = 0x01; //timer interrupt sources
0032 81E0 ldi R24,1
0034 89BF out 0x39,R24
0036 .dbline 41
0036 ; Power_LED_Drown();
0036 8F98 cbi 0x11,7
0038 .dbline 42
0038 ; SEI(); //re-enable interrupts
0038 7894 sei
003A .dbline -2
003A L3:
003A .dbline 0 ; func end
003A 0895 ret
003C .dbend
003C .dbfunc e DelaymS _DelaymS fV
003C ; i -> R20,R21
003C ; cnt -> R16,R17
.even
003C _DelaymS::
003C 4A93 st -y,R20
003E 5A93 st -y,R21
0040 .dbline -1
0040 .dbline 48
0040 ; //all peripherals are now initialized
0040 ; }
0040 ;
0040 ;
0040 ; void DelaymS(unsigned int cnt)
0040 ; {
0040 L5:
0040 .dbline 50
0040 ; unsigned int i;
0040 ; do{
0040 .dbline 51
0040 ; i = 5000;
0040 48E8 ldi R20,5000
0042 53E1 ldi R21,19
0044 L8:
0044 .dbline 52
0044 ; do{
0044 .dbline 53
0044 ; asm("nop");
0044 0000 nop
0046 .dbline 54
0046 ; asm("nop");
0046 0000 nop
0048 .dbline 55
0048 ; } while(--i);
0048 L9:
0048 .dbline 55
0048 CA01 movw R24,R20
004A 0197 sbiw R24,1
004C AC01 movw R20,R24
004E 4030 cpi R20,0
0050 4507 cpc R20,R21
0052 C1F7 brne L8
0054 X0:
0054 .dbline 56
0054 ; }while (--cnt);
0054 L6:
0054 .dbline 56
0054 C801 movw R24,R16
0056 0197 sbiw R24,1
0058 8C01 movw R16,R24
005A 0030 cpi R16,0
005C 0107 cpc R16,R17
005E 81F7 brne L5
0060 X1:
0060 .dbline -2
0060 L4:
0060 .dbline 0 ; func end
0060 5991 ld R21,y+
0062 4991 ld R20,y+
0064 0895 ret
0066 .dbsym r i 20 i
0066 .dbsym r cnt 16 i
0066 .dbend
0066 .dbfunc e main _main fV
0066 .dbstruct 0 4 data
0066 .dbfield 0 pc_rxd c
0066 .dbfield 1 pc_txd c
0066 .dbfield 2 c51_rxd c
0066 .dbfield 3 c51_txd c
0066 .dbend
0066 .dbstruct 0 260 Device51_StructOfProtocol
0066 .dbfield 0 Address c
0066 .dbfield 1 Length i
0066 .dbfield 3 Command c
0066 .dbfield 4 Data A[256:256]c
0066 .dbend
0066 .dbstruct 0 260 StructOfProtocol
0066 .dbfield 0 Address c
0066 .dbfield 1 Length i
0066 .dbfield 3 Command c
0066 .dbfield 4 Data A[256:256]c
0066 .dbend
0066 ; i -> <dead>
0066 ; p_buf -> R20,R21
0066 ; C51_buf -> R20,R21
0066 ; communication -> R10,R11
.even
0066 _main::
0066 .dbline -1
0066 .dbline 62
0066 ; }
0066 ;
0066 ;
0066 ;
0066 ; void main(void)
0066 ; {
0066 .dbline 67
0066 ; unsigned int i;
0066 ; struct StructOfProtocol *p_buf;
0066 ; struct Device51_StructOfProtocol *C51_buf;
0066 ; struct data *communication;
0066 ; p_buf = (struct StructOfProtocol *)Buffer485;
0066 .dbline 69
0066 ;
0066 ; C51_buf = (struct Device51_StructOfProtocol *)C51Buffer485;
0066 40E0 ldi R20,<_C51Buffer485
0068 50E0 ldi R21,>_C51Buffer485
006A .dbline 70
006A ; init_devices();
006A DADF xcall _init_devices
006C .dbline 71
006C ; Device_Address = 0x01;
006C 81E0 ldi R24,1
006E 80930900 sts _Device_Address,R24
0072 .dbline 73
0072 ;
0072 ; C51_buf->Address = 0x01;
0072 FA01 movw R30,R20
0074 8083 std z+0,R24
0076 .dbline 74
0076 ; C51_buf->Command = 0x02;
0076 82E0 ldi R24,2
0078 8383 std z+3,R24
007A .dbline 75
007A ; C51_buf->Data[0] = 0x03;
007A 83E0 ldi R24,3
007C 8483 std z+4,R24
007E .dbline 76
007E ; C51_buf->Data[1] = 0x04;
007E 84E0 ldi R24,4
0080 8583 std z+5,R24
0082 .dbline 77
0082 ; C51_buf->Data[2] = 0x05;
0082 85E0 ldi R24,5
0084 8683 std z+6,R24
0086 .dbline 78
0086 ; C51_buf->Data[3] = 0x06;
0086 86E0 ldi R24,6
0088 8783 std z+7,R24
008A .dbline 79
008A ; C51_buf->Length = 0x05;
008A 85E0 ldi R24,5
008C 90E0 ldi R25,0
008E 9283 std z+2,R25
0090 8183 std z+1,R24
0092 .dbline 81
0092 ;
0092 ; Power_LED_Light();
0092 8F9A sbi 0x11,7
0094 09C0 xjmp L13
0096 L12:
0096 .dbline 84
0096 ; // BUS_SendPacket_51Device();
0096 ; while(1)
0096 ; {
0096 .dbline 85
0096 ; if(communication->pc_rxd)
0096 F501 movw R30,R10
0098 2080 ldd R2,z+0
009A 2220 tst R2
009C 29F0 breq L15
009E X2:
009E .dbline 86
009E ; {
009E .dbline 87
009E ; communication->pc_rxd = 0;
009E 2224 clr R2
00A0 2082 std z+0,R2
00A2 .dbline 88
00A2 ; max485_on();
00A2 959A sbi 0x12,5
00A4 .dbline 89
00A4 ; UDR = 0x31;
00A4 81E3 ldi R24,49
00A6 8CB9 out 0xc,R24
00A8 .dbline 90
00A8 ; }
00A8 L15:
00A8 .dbline 91
00A8 ; }
00A8 L13:
00A8 .dbline 83
00A8 F6CF xjmp L12
00AA X3:
00AA .dbline -2
00AA L11:
00AA .dbline 0 ; func end
00AA 0895 ret
00AC .dbsym l i 1 i
00AC .dbsym r p_buf 20 pS[StructOfProtocol]
00AC .dbsym r C51_buf 20 pS[Device51_StructOfProtocol]
00AC .dbsym r communication 10 pS[data]
00AC .dbend
.area bss(ram, con, rel)
0000 .dbfile C:\DOCUME~1\Administrator\桌面\LCU904~1\固件程序\main.c
0000 _ReadSwitchPINC::
0000 .blkb 1
0001 .dbfile C:\DOCUME~1\Administrator\桌面\LCU904~1\固件程序\main.h
0001 .dbsym e ReadSwitchPINC _ReadSwitchPINC c
0001 _ReadSwitchPINA::
0001 .blkb 1
0002 .dbsym e ReadSwitchPINA _ReadSwitchPINA c
0002 _FireSwitchStatus::
0002 .blkb 1
0003 .dbsym e FireSwitchStatus _FireSwitchStatus c
0003 _StopSwitchStatus::
0003 .blkb 1
0004 .dbsym e StopSwitchStatus _StopSwitchStatus c
0004 _WorkingMode::
0004 .blkb 1
0005 .dbsym e WorkingMode _WorkingMode c
0005 _SecondOfTime::
0005 .blkb 2
0007 .dbsym e SecondOfTime _SecondOfTime i
0007 _DayOfTime::
0007 .blkb 2
0009 .dbsym e DayOfTime _DayOfTime i
0009 _Device_Address::
0009 .blkb 1
000A .dbsym e Device_Address _Device_Address c
000A _Cyc_manage::
000A .blkb 1
000B .dbsym e Cyc_manage _Cyc_manage c
000B _C51Buffer485::
000B .blkb 256
010B .dbsym e C51Buffer485 _C51Buffer485 A[256:256]c
010B _Buffer485::
010B .blkb 256
020B .dbsym e Buffer485 _Buffer485 A[256:256]c
020B _Read74HC165Switch::
020B .blkb 3
020E .dbsym e Read74HC165Switch _Read74HC165Switch A[3:3]c
020E ; }
020E ;
020E ; /*
020E ; {
020E ; Cyc_manage = 0x02;
020E ; for(i=1;i<9;i*=2)
020E ; {
020E ; switch(Cyc_manage&i)
020E ; {
020E ; case 1://处理跟PC通讯部分
020E ; communication_with_pc();
020E ; break;
020E ; case 2://处理跟51控制板通讯部分
020E ; communication_with_51director();
020E ; break;
020E ; case 4://取数据发送给51板
020E ; update_data_51director();
020E ; break;
020E ; case 8://检查按键发送给51控制板
020E ; communication_ReadSwitch();
020E ; break;
020E ; default:
020E ; break;
020E ; }
020E ; }
020E ; } */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -