📄 intmcu.lis
字号:
.module intmcu.c
.area text(rom, con, rel)
0000 .dbfile D:\报警系统设计资料\报警系统软件\测量模块基于CAN的系统网程序\开关量CAN网\intmcu.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 9
0000 ; #include "main.h"
0000 ;
0000 ; Uchar DI_Status[3];
0000 ; Uchar PINA_temp,PINB_temp,PINE_temp,PINF_temp;
0000 ; unsigned char DI_data_cur[12],DI_data[12],DI_data_pre[12]; //状态寄存器
0000 ;
0000 ;
0000 ; void port_init(void) //端口初始化
0000 ; {
0000 .dbline 10
0000 ; DDRA = 0x00;
0000 2224 clr R2
0002 21B8 out 0x1,R2
0004 .dbline 11
0004 ; DDRB = 0xe0;
0004 80EE ldi R24,224
0006 84B9 out 0x4,R24
0008 .dbline 12
0008 ; DDRE = 0x00;
0008 2DB8 out 0xd,R2
000A .dbline 13
000A ; DDRF = 0x00;
000A 20BA out 0x10,R2
000C .dbline 14
000C ; DDRC = 0x00;
000C 27B8 out 0x7,R2
000E .dbline 15
000E ; DDRD = 0x10;
000E 80E1 ldi R24,16
0010 8AB9 out 0xa,R24
0012 .dbline 16
0012 ; PORTG = 0x08;
0012 88E0 ldi R24,8
0014 84BB out 0x14,R24
0016 .dbline 17
0016 ; DDRG = 0x08;
0016 83BB out 0x13,R24
0018 .dbline -2
0018 L1:
0018 .dbline 0 ; func end
0018 0895 ret
001A .dbend
001A .dbfunc e DI_handle _DI_handle fV
.even
001A _DI_handle::
001A .dbline -1
001A .dbline 21
001A ; }
001A ;
001A ; void DI_handle(void) //开关状态读取
001A ; {
001A .dbline 22
001A ; PINA_temp = PINA;
001A 20B0 in R2,0x0
001C 20922700 sts _PINA_temp,R2
0020 .dbline 23
0020 ; PINB_temp = PINB;
0020 23B0 in R2,0x3
0022 20922600 sts _PINB_temp,R2
0026 .dbline 24
0026 ; PINE_temp = PINE;
0026 2CB0 in R2,0xc
0028 20922500 sts _PINE_temp,R2
002C .dbline 25
002C ; PINF_temp = PINF;
002C 2FB0 in R2,0xf
002E 20922400 sts _PINF_temp,R2
0032 .dbline 28
0032 ;
0032 ; /**************Channel 1*****************/
0032 ; if(PINA_temp & (1<<3))
0032 80912700 lds R24,_PINA_temp
0036 8870 andi R24,8
0038 31F0 breq L3
003A .dbline 29
003A ; DI_Status[0] |= (1<<0);
003A 80912800 lds R24,_DI_Status
003E 8160 ori R24,1
0040 80932800 sts _DI_Status,R24
0044 05C0 xjmp L4
0046 L3:
0046 .dbline 31
0046 ; else
0046 ; DI_Status[0] &= (~(1<<0));
0046 80912800 lds R24,_DI_Status
004A 8E7F andi R24,254
004C 80932800 sts _DI_Status,R24
0050 L4:
0050 .dbline 33
0050 ;
0050 ; if(PINF_temp & (1<<2))
0050 80912400 lds R24,_PINF_temp
0054 8470 andi R24,4
0056 31F0 breq L5
0058 .dbline 34
0058 ; DI_Status[0] |= (1<<1);
0058 80912800 lds R24,_DI_Status
005C 8260 ori R24,2
005E 80932800 sts _DI_Status,R24
0062 05C0 xjmp L6
0064 L5:
0064 .dbline 36
0064 ; else
0064 ; DI_Status[0] &= (~(1<<1));
0064 80912800 lds R24,_DI_Status
0068 8D7F andi R24,253
006A 80932800 sts _DI_Status,R24
006E L6:
006E .dbline 39
006E ;
006E ; /**************Channel 2*****************/
006E ; if(PINF_temp & (1<<3))
006E 80912400 lds R24,_PINF_temp
0072 8870 andi R24,8
0074 31F0 breq L7
0076 .dbline 40
0076 ; DI_Status[0] |= (1<<2);
0076 80912800 lds R24,_DI_Status
007A 8460 ori R24,4
007C 80932800 sts _DI_Status,R24
0080 05C0 xjmp L8
0082 L7:
0082 .dbline 42
0082 ; else
0082 ; DI_Status[0] &= (~(1<<2));
0082 80912800 lds R24,_DI_Status
0086 8B7F andi R24,251
0088 80932800 sts _DI_Status,R24
008C L8:
008C .dbline 44
008C ;
008C ; if(PINA_temp & (1<<2))
008C 80912700 lds R24,_PINA_temp
0090 8470 andi R24,4
0092 31F0 breq L9
0094 .dbline 45
0094 ; DI_Status[0] |= (1<<3);
0094 80912800 lds R24,_DI_Status
0098 8860 ori R24,8
009A 80932800 sts _DI_Status,R24
009E 05C0 xjmp L10
00A0 L9:
00A0 .dbline 47
00A0 ; else
00A0 ; DI_Status[0] &= (~(1<<3));
00A0 80912800 lds R24,_DI_Status
00A4 877F andi R24,247
00A6 80932800 sts _DI_Status,R24
00AA L10:
00AA .dbline 50
00AA ;
00AA ; /**************Channel 3*****************/
00AA ; if(PINE_temp & (1<<7))
00AA 80912500 lds R24,_PINE_temp
00AE 8078 andi R24,128
00B0 31F0 breq L11
00B2 .dbline 51
00B2 ; DI_Status[0] |= (1<<4);
00B2 80912800 lds R24,_DI_Status
00B6 8061 ori R24,16
00B8 80932800 sts _DI_Status,R24
00BC 05C0 xjmp L12
00BE L11:
00BE .dbline 53
00BE ; else
00BE ; DI_Status[0] &= (~(1<<4));
00BE 80912800 lds R24,_DI_Status
00C2 8F7E andi R24,239
00C4 80932800 sts _DI_Status,R24
00C8 L12:
00C8 .dbline 55
00C8 ;
00C8 ; if(PINE_temp & (1<<1))
00C8 80912500 lds R24,_PINE_temp
00CC 8270 andi R24,2
00CE 31F0 breq L13
00D0 .dbline 56
00D0 ; DI_Status[0] |= (1<<5);
00D0 80912800 lds R24,_DI_Status
00D4 8062 ori R24,32
00D6 80932800 sts _DI_Status,R24
00DA 05C0 xjmp L14
00DC L13:
00DC .dbline 58
00DC ; else
00DC ; DI_Status[0] &= (~(1<<5));
00DC 80912800 lds R24,_DI_Status
00E0 8F7D andi R24,223
00E2 80932800 sts _DI_Status,R24
00E6 L14:
00E6 .dbline 61
00E6 ;
00E6 ; /**************Channel 4*****************/
00E6 ; if(PINE_temp & (1<<0))
00E6 80912500 lds R24,_PINE_temp
00EA 8170 andi R24,1
00EC 31F0 breq L15
00EE .dbline 62
00EE ; DI_Status[0] |= (1<<6);
00EE 80912800 lds R24,_DI_Status
00F2 8064 ori R24,64
00F4 80932800 sts _DI_Status,R24
00F8 05C0 xjmp L16
00FA L15:
00FA .dbline 64
00FA ; else
00FA ; DI_Status[0] &= (~(1<<6));
00FA 80912800 lds R24,_DI_Status
00FE 8F7B andi R24,191
0100 80932800 sts _DI_Status,R24
0104 L16:
0104 .dbline 66
0104 ;
0104 ; if(PINE_temp & (1<<6))
0104 80912500 lds R24,_PINE_temp
0108 8074 andi R24,64
010A 31F0 breq L17
010C .dbline 67
010C ; DI_Status[0] |= (1<<7);
010C 80912800 lds R24,_DI_Status
0110 8068 ori R24,128
0112 80932800 sts _DI_Status,R24
0116 05C0 xjmp L18
0118 L17:
0118 .dbline 69
0118 ; else
0118 ; DI_Status[0] &= (~(1<<7));
0118 80912800 lds R24,_DI_Status
011C 8F77 andi R24,127
011E 80932800 sts _DI_Status,R24
0122 L18:
0122 .dbline 72
0122 ;
0122 ; /**************Channel 5*****************/
0122 ; if(PINA_temp & (1<<5))
0122 80912700 lds R24,_PINA_temp
0126 8072 andi R24,32
0128 31F0 breq L19
012A .dbline 73
012A ; DI_Status[1] |= (1<<0);
012A 80912900 lds R24,_DI_Status+1
012E 8160 ori R24,1
0130 80932900 sts _DI_Status+1,R24
0134 05C0 xjmp L20
0136 L19:
0136 .dbline 75
0136 ; else
0136 ; DI_Status[1] &= (~(1<<0));
0136 80912900 lds R24,_DI_Status+1
013A 8E7F andi R24,254
013C 80932900 sts _DI_Status+1,R24
0140 L20:
0140 .dbline 77
0140 ;
0140 ; if(PINF_temp & (1<<0))
0140 80912400 lds R24,_PINF_temp
0144 8170 andi R24,1
0146 31F0 breq L23
0148 .dbline 78
0148 ; DI_Status[1] |= (1<<1);
0148 80912900 lds R24,_DI_Status+1
014C 8260 ori R24,2
014E 80932900 sts _DI_Status+1,R24
0152 05C0 xjmp L24
0154 L23:
0154 .dbline 80
0154 ; else
0154 ; DI_Status[1] &= (~(1<<1));
0154 80912900 lds R24,_DI_Status+1
0158 8D7F andi R24,253
015A 80932900 sts _DI_Status+1,R24
015E L24:
015E .dbline 83
015E ;
015E ; /**************Channel 6*****************/
015E ; if(PINF_temp & (1<<1))
015E 80912400 lds R24,_PINF_temp
0162 8270 andi R24,2
0164 31F0 breq L27
0166 .dbline 84
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -