📄 main.lis
字号:
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 + -