⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 intmcu.lis

📁 工业开关量检测模块的原代码,带断线检测功能
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .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 + -