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

📄 main.lis

📁 基于PIC单片机
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 0000           ; uchar cn2=0;
 0000           ; 
 0000           ; uchar first_alarm=0;
 0000           ; uchar shoubao[9];                  //首报                
 0000           ; uchar kk1=0;                                     //等待接收32帧数用
 0000           ; uchar yong=0;                                    //判断CAN出错标志
 0000           ; //uchar yy1=0;
 0000           ; //故障,报警显示用实时地址
 0000           ; uint guzhangaddr=0x6800;                 //故障地址 0x6800-0x7bff
 0000           ; uint baojingaddr=0x0400;                 //报警地址 0x0400-0x67ff
 0000           ; //存储用
 0000           ; uint guzhangaddr2=0x6800;                //故障地址 0x6800-0x7bff
 0000           ; uint baojingaddr2=0x0400;                //报警地址 0x0400-0x5b7f
 0000           ; 
 0000           ; uint onaddr2=0;    //开关机用,
 0000           ; uchar jj=0;        //判断第一次开机用 取外部E2故障,报警地址必须在存了开机记录之后!
 0000           ; volatile uchar keyc=0;
 0000           ; 
 0000           ; uchar firstuse1=0;                               //判断电源故障是不是第一次进入用
 0000           ; uchar firstuse2=0;  
 0000           ; uchar firstuse3=0;
 0000           ; uchar firstuse4=0;                       //亏电
 0000           ; uchar hibao[32][4];                      //高报
 0000           ; uchar lobao[32][4];                      //低报
 0000           ; uchar detector[32][4];           //传感器
 0000           ; uchar communicate[32][4];                //通讯 
 0000           ; uchar xuanbit[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
 0000           ; uchar cannum=0;
 0000           ; 
 0000           ; uint cuo1=0;                       //记录当前故障总数用    
 0000           ; uint cuo2=0;                                     //记录当前报警总数用
 0000           ; uint cuo3=0;                                     // 实时界面用 实时报警,故障数
 0000           ; uint cuo4=0;                                     //实时界面用,基数
 0000           ; uchar wunai=0;                                   //自动搜索后第一次轮埙的数不要
 0000           ; uchar wunai2=0;                                  //节点投用
 0000           ; uchar idnum;
 0000           ; uchar can_cuo_flag[32];                  //转换器故障 用
 0000           ; uchar yure_flag=1;                      //预热标志
 0000           ; struct 
 0000           ; {
 0000           ;     uchar bei;                                   //备电
 0000           ;       uchar shi;                                 //市电
 0000           ;       uchar cong;                                //从电
 0000           ; }error;       
 0000           ; struct 
 0000           ; {    
 0000           ;     uchar di[32][4];                             //低报
 0000           ;       uchar tan[32][4];                          //探测器
 0000           ;       uchar tong[32][4];                         //通讯
 0000           ;       uchar gao[32][4];              //高报 
 0000           ; }rxerror;     
 0000           ; //CAN相关全局变量
 0000           ; uchar canuse[4]={0xff,0xff,0xff,0xff};    //转换器的投用情况 按位
 0000           ; uchar detuse[33][4];         //所有485节点的投用情况,0,1按位起作用
 0000           ; uchar det_link[33]  ;        //探测器或联动模块选择字节段,按位起作用 
 0000           ; uchar trans_complete=0;      //一个转换器下所有数据上传结束标志   //去掉了volatile
 0000           ; uchar rx_buff[13];                  //接收转换器上传的数据
 0000           ; uchar zhongbuff[33][10];            // 一次接收的转换器的数 zhongbuff[33][n]接收错误总数
 0000           ; //时间设置相关变量
 0000           ; uchar time_set[7];       //存已处理的设置时间,日期
 0000           ; uchar realtimebuff[7];   //存中断INT6中读取的实时时间
 0000           ; uchar minute=0;          //分钟,实时关机记录函数用
 0000           ; uchar minute2=0;
 0000           ; uchar minute3=0;
 0000           ; uchar second=0;          //秒
 0000           ; //GAL门相关全局变量
 0000           ; uchar gal1data=0x00 ;
 0000           ; uchar gal2data=0x7f ;           //继电器控制信号1,联动模块故障1,联动输出都为1
 0000           ; uchar gal3data=0x77 ;                         //指示灯为共阳极的
 0000           ; uchar gal4data=0x6a ;                         //默认正常
 0000           ; uchar gal5data=0xff ;
 0000           ; /****************端口的初始化**未用的引脚使用内部上拉*************/
 0000           ; void port_init(void) 
 0000           ; {
 0000                   .dbline 102
 0000           ;     PORTA = 0x00;
 0000 2224              clr R2
 0002 2BBA              out 0x1b,R2
 0004                   .dbline 103
 0004           ;     DDRA  = 0x00;
 0004 2ABA              out 0x1a,R2
 0006                   .dbline 104
 0006           ;     PORTB = 0xe1;    //PB0MCP2510片选信号0xe1
 0006 81EE              ldi R24,225
 0008 88BB              out 0x18,R24
 000A                   .dbline 105
 000A           ;     DDRB  = 0x17;    //CAN相关的控制信号0x17
 000A 87E1              ldi R24,23
 000C 87BB              out 0x17,R24
 000E                   .dbline 106
 000E           ;     PORTC = 0x00;    //m103 output only
 000E 25BA              out 0x15,R2
 0010                   .dbline 107
 0010           ;     DDRC  = 0x00;    //C口作为外部寻址地址的高八位
 0010 24BA              out 0x14,R2
 0012                   .dbline 108
 0012           ;     PORTD = 0x50;    //20
 0012 80E5              ldi R24,80
 0014 82BB              out 0x12,R24
 0016                   .dbline 109
 0016           ;     DDRD  = 0x00;    //打印机BUSY PD7,消音键输入PD6,液晶忙 PD5输入
 0016 21BA              out 0x11,R2
 0018                   .dbline 110
 0018           ;     PORTE = 0x84;    
 0018 84E8              ldi R24,132
 001A 83B9              out 0x3,R24
 001C                   .dbline 111
 001C           ;     DDRE  = 0x3C;
 001C 8CE3              ldi R24,60
 001E 82B9              out 0x2,R24
 0020                   .dbline 112
 0020           ;     PORTF = 0x00;
 0020 20926200          sts 98,R2
 0024                   .dbline 113
 0024           ;     DDRF  = 0x00;   //PF0-PF3输入输出通道关联用
 0024 20926100          sts 97,R2
 0028                   .dbline 114
 0028           ;     PORTG = 0x00;   //控制看门狗中断的引脚PG4未开启呢
 0028 20926500          sts 101,R2
 002C                   .dbline 115
 002C           ;     DDRG  = 0x00;   //00是没有加入看门 狗0x10加入
 002C 20926400          sts 100,R2
 0030                   .dbline 116
 0030           ;     DDRG  = 0x10; 
 0030 80E1              ldi R24,16
 0032 80936400          sts 100,R24
 0036                   .dbline -2
 0036           L3:
 0036                   .dbline 0 ; func end
 0036 0895              ret
 0038                   .dbend
 0038                   .dbfunc e uart1_init _uart1_init fV
                        .even
 0038           _uart1_init::
 0038                   .dbline -1
 0038                   .dbline 122
 0038           ; }
 0038           ; //UART1 initialize, desired baud rate: 19200
 0038           ; // actual: baud rate:19200 (0.2%)
 0038           ; // char size: 8 bit    parity: Disabled
 0038           ; void uart1_init(void) 
 0038           ; {
 0038                   .dbline 123
 0038           ;     UCSR1B = 0x00;          //disable while setting baud rate
 0038 2224              clr R2
 003A 20929A00          sts 154,R2
 003E                   .dbline 124
 003E           ;     UCSR1A = 0x00;
 003E 20929B00          sts 155,R2
 0042                   .dbline 125
 0042           ;     UCSR1C =(1<<UCSZ11)|(1<<UCSZ10);
 0042 86E0              ldi R24,6
 0044 80939D00          sts 157,R24
 0048                   .dbline 126
 0048           ;     UBRR1L=35;//25;//(fosc/16/(baud-1))%256;
 0048 83E2              ldi R24,35
 004A 80939900          sts 153,R24
 004E                   .dbline 127
 004E           ;     UBRR1H=0;//(fosc/16/(baud-1))/256;
 004E 20929800          sts 152,R2
 0052                   .dbline 128
 0052           ;     UCSR1B =(1<<RXEN1)|(1<<TXEN1)|(1<<RXCIE1);
 0052 88E9              ldi R24,152
 0054 80939A00          sts 154,R24
 0058                   .dbline -2
 0058           L4:
 0058                   .dbline 0 ; func end
 0058 0895              ret
 005A                   .dbend
 005A                   .dbfunc e uart0_init _uart0_init fV
                        .even
 005A           _uart0_init::
 005A                   .dbline -1
 005A                   .dbline 132
 005A           ; }
 005A           ; // desired baud rate:4800 ,9 bit
 005A           ; void uart0_init(void)
 005A           ; {
 005A                   .dbline 133
 005A           ;     UCSR0B = 0x00; //disable while setting baud rate
 005A 2224              clr R2
 005C 2AB8              out 0xa,R2
 005E                   .dbline 134
 005E           ;     UCSR0A = 0x00;
 005E 2BB8              out 0xb,R2
 0060                   .dbline 135
 0060           ;     UCSR0C = 0x06;
 0060 86E0              ldi R24,6
 0062 80939500          sts 149,R24
 0066                   .dbline 136
 0066           ;     UBRR0L  = 0x8F; //set baud rate lo
 0066 8FE8              ldi R24,143
 0068 89B9              out 0x9,R24
 006A                   .dbline 137
 006A           ;     UBRR0H = 0x00; //set baud rate hi
 006A 20929000          sts 144,R2
 006E                   .dbline 138
 006E           ;     UCSR0B = 0x1c;
 006E 8CE1              ldi R24,28
 0070 8AB9              out 0xa,R24
 0072                   .dbline -2
 0072           L5:
 0072                   .dbline 0 ; func end
 0072 0895              ret
 0074                   .dbend
 0074                   .dbfunc e spi_init _spi_init fV
                        .even
 0074           _spi_init::
 0074                   .dbline -1
 0074                   .dbline 142
 0074           ; }
 0074           ; //SPI initialize
 0074           ; void spi_init(void)
 0074           ; {
 0074                   .dbline 143
 0074           ;     SPCR = 0x50; //setup SPI
 0074 80E5              ldi R24,80
 0076 8DB9              out 0xd,R24
 0078                   .dbline 144
 0078           ;     SPSR = 0x00; //setup SPI
 0078 2224              clr R2
 007A 2EB8              out 0xe,R2
 007C                   .dbline -2
 007C           L6:
 007C                   .dbline 0 ; func end
 007C 0895              ret
 007E                   .dbend
 007E                   .dbfunc e timer1_init _timer1_init fV
                        .even
 007E           _timer1_init::
 007E                   .dbline -1
 007E                   .dbline 150
 007E           ; }
 007E           ; //TIMER1 initialize - prescale:Stop
 007E           ; // WGM: 0) Normal, TOP=0xFFFF
 007E           ; // desired value: 1Hz// actual value: Out of range
 007E           ; void timer1_init(void)
 007E           ; {
 007E                   .dbline 151
 007E           ;     TCCR1B = 0x00; //stop
 007E 2224              clr R2
 0080 2EBC              out 0x2e,R2
 0082                   .dbline 152
 0082           ;     TCNT1H = 0xFF /*INVALID SETTING*/; //setup
 0082 8FEF              ldi R24,255
 0084 8DBD              out 0x2d,R24
 0086                   .dbline 153
 0086           ;     TCNT1L = 0xFE /*INVALID SETTING*/;
 0086 8EEF              ldi R24,254
 0088 8CBD              out 0x2c,R24
 008A                   .dbline 154
 008A           ;     OCR1AH = 0x00 /*INVALID SETTING*/;
 008A 2BBC              out 0x2b,R2
 008C                   .dbline 155
 008C           ;     OCR1AL = 0x00 /*INVALID SETTING*/;
 008C 2ABC              out 0x2a,R2
 008E                   .dbline 156
 008E           ;     OCR1BH = 0x00 /*INVALID SETTING*/;
 008E 29BC              out 0x29,R2
 0090                   .dbline 157
 0090           ;     OCR1BL = 0x00 /*INVALID SETTING*/;
 0090 28BC              out 0x28,R2
 0092                   .dbline 158
 0092           ;     OCR1CH = 0x00 /*INVALID SETTING*/;
 0092 20927900          sts 121,R2
 0096                   .dbline 159
 0096           ;     OCR1CL = 0x00 /*INVALID SETTING*/;
 0096 20927800          sts 120,R2
 009A                   .dbline 160
 009A           ;     ICR1H  = 0x00 /*INVALID SETTING*/;
 009A 27BC              out 0x27,R2
 009C                   .dbline 161
 009C           ;     ICR1L  = 0x00 /*INVALID SETTING*/;
 009C 26BC              out 0x26,R2
 009E                   .dbline 162
 009E           ;     TCCR1A = 0x00;
 009E 2FBC              out 0x2f,R2
 00A0                   .dbline 163
 00A0           ;     TCCR1B = 0x06; //start Timer
 00A0 86E0              ldi R24,6
 00A2 8EBD              out 0x2e,R24
 00A4                   .dbline -2
 00A4           L7:
 00A4                   .dbline 0 ; func end
 00A4 0895              ret
 00A6                   .dbend
 00A6                   .dbfunc e init_can _init_can fV
                        .even
 00A6           _init_can::
 00A6                   .dbline -1
 00A6                   .dbline 167
 00A6           ; }
 00A6           ; //MCP2510初始化
 00A6           ; void init_can(void)
 00A6           ; { 
 00A6                   .dbline 168
 00A6           ;     write_MCP (CANCTRL, 0x80);  //0x80, 配置模式
 00A6 20E8              ldi R18,128
 00A8 0FE0              ldi R16,15
 00AA 0E940000          xcall _write_MCP
 00AE                   .dbline 184
 00AE           ;       /*
 00AE           ;     //每发一贞转换器要延时2ms
 00AE           ;       write_MCP (CNF1, 0x03);         //      Set CAN-Baudrate  125 kBaud
 00AE           ;        //同步跳转宽度SJW=1*TQ、
 00AE           ;     write_MCP (CNF2, 0x90);           //      8MHz
 00AE           ;        //

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -