📄 main.s
字号:
.module main.c
.area data(ram, con, rel)
_realaddr2::
.blkb 2
.area idata
.word 12288
.area data(ram, con, rel)
.dbfile F:\AVR\zhulast\main.c
.dbsym e realaddr2 _realaddr2 i
_cn2::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile F:\AVR\zhulast\main.c
.dbsym e cn2 _cn2 c
_first_alarm::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile F:\AVR\zhulast\main.c
.dbsym e first_alarm _first_alarm c
_kk1::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile F:\AVR\zhulast\main.c
.dbsym e kk1 _kk1 c
_yong::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile F:\AVR\zhulast\main.c
.dbsym e yong _yong c
_guzhangaddr::
.blkb 2
.area idata
.word 26624
.area data(ram, con, rel)
.dbfile F:\AVR\zhulast\main.c
.dbsym e guzhangaddr _guzhangaddr i
_baojingaddr::
.blkb 2
.area idata
.word 1024
.area data(ram, con, rel)
.dbfile F:\AVR\zhulast\main.c
.dbsym e baojingaddr _baojingaddr i
_guzhangaddr2::
.blkb 2
.area idata
.word 26624
.area data(ram, con, rel)
.dbfile F:\AVR\zhulast\main.c
.dbsym e guzhangaddr2 _guzhangaddr2 i
_baojingaddr2::
.blkb 2
.area idata
.word 1024
.area data(ram, con, rel)
.dbfile F:\AVR\zhulast\main.c
.dbsym e baojingaddr2 _baojingaddr2 i
_onaddr2::
.blkb 2
.area idata
.word 0
.area data(ram, con, rel)
.dbfile F:\AVR\zhulast\main.c
.dbsym e onaddr2 _onaddr2 i
_jj::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile F:\AVR\zhulast\main.c
.dbsym e jj _jj c
_keyc::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile F:\AVR\zhulast\main.c
.dbsym e keyc _keyc c
_firstuse1::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile F:\AVR\zhulast\main.c
.dbsym e firstuse1 _firstuse1 c
_firstuse2::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile F:\AVR\zhulast\main.c
.dbsym e firstuse2 _firstuse2 c
_firstuse3::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile F:\AVR\zhulast\main.c
.dbsym e firstuse3 _firstuse3 c
_firstuse4::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile F:\AVR\zhulast\main.c
.dbsym e firstuse4 _firstuse4 c
_xuanbit::
.blkb 2
.area idata
.byte 1,2
.area data(ram, con, rel)
.dbfile F:\AVR\zhulast\main.c
.blkb 2
.area idata
.byte 4,8
.area data(ram, con, rel)
.dbfile F:\AVR\zhulast\main.c
.blkb 2
.area idata
.byte 16,32
.area data(ram, con, rel)
.dbfile F:\AVR\zhulast\main.c
.blkb 2
.area idata
.byte 64,128
.area data(ram, con, rel)
.dbfile F:\AVR\zhulast\main.c
.dbsym e xuanbit _xuanbit A[8:8]c
_cannum::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile F:\AVR\zhulast\main.c
.dbsym e cannum _cannum c
_cuo1::
.blkb 2
.area idata
.word 0
.area data(ram, con, rel)
.dbfile F:\AVR\zhulast\main.c
.dbsym e cuo1 _cuo1 i
_cuo2::
.blkb 2
.area idata
.word 0
.area data(ram, con, rel)
.dbfile F:\AVR\zhulast\main.c
.dbsym e cuo2 _cuo2 i
_cuo3::
.blkb 2
.area idata
.word 0
.area data(ram, con, rel)
.dbfile F:\AVR\zhulast\main.c
.dbsym e cuo3 _cuo3 i
_cuo4::
.blkb 2
.area idata
.word 0
.area data(ram, con, rel)
.dbfile F:\AVR\zhulast\main.c
.dbsym e cuo4 _cuo4 i
_wunai::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile F:\AVR\zhulast\main.c
.dbsym e wunai _wunai c
_wunai2::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile F:\AVR\zhulast\main.c
.dbsym e wunai2 _wunai2 c
_yure_flag::
.blkb 1
.area idata
.byte 1
.area data(ram, con, rel)
.dbfile F:\AVR\zhulast\main.c
.dbsym e yure_flag _yure_flag c
_canuse::
.blkb 2
.area idata
.byte 255,255
.area data(ram, con, rel)
.dbfile F:\AVR\zhulast\main.c
.blkb 2
.area idata
.byte 255,255
.area data(ram, con, rel)
.dbfile F:\AVR\zhulast\main.c
.dbsym e canuse _canuse A[4:4]c
_trans_complete::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile F:\AVR\zhulast\main.c
.dbsym e trans_complete _trans_complete c
_minute::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile F:\AVR\zhulast\main.c
.dbsym e minute _minute c
_minute2::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile F:\AVR\zhulast\main.c
.dbsym e minute2 _minute2 c
_minute3::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile F:\AVR\zhulast\main.c
.dbsym e minute3 _minute3 c
_second::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile F:\AVR\zhulast\main.c
.dbsym e second _second c
_gal1data::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile F:\AVR\zhulast\main.c
.dbsym e gal1data _gal1data c
_gal2data::
.blkb 1
.area idata
.byte 127
.area data(ram, con, rel)
.dbfile F:\AVR\zhulast\main.c
.dbsym e gal2data _gal2data c
_gal3data::
.blkb 1
.area idata
.byte 119
.area data(ram, con, rel)
.dbfile F:\AVR\zhulast\main.c
.dbsym e gal3data _gal3data c
_gal4data::
.blkb 1
.area idata
.byte 106
.area data(ram, con, rel)
.dbfile F:\AVR\zhulast\main.c
.dbsym e gal4data _gal4data c
_gal5data::
.blkb 1
.area idata
.byte 255
.area data(ram, con, rel)
.dbfile F:\AVR\zhulast\main.c
.dbsym e gal5data _gal5data c
.area text(rom, con, rel)
.dbfile F:\AVR\zhulast\main.c
.dbfunc e port_init _port_init fV
.even
_port_init::
.dbline -1
.dbline 101
; //ICC-AVR application builder : 2006-11-29 10:30:50
; // Target : M128
; // Crystal: 11.0592.0000Mhz
; /******************************main file*********************************/
; #include "allhead.h"
; extern uchar biaozhi; //触摸屏接收中断用
; extern uchar RXC_BUFF[15]; //触摸屏发送的数据
; extern uchar key; //键值
; extern uchar jiemian; //界面标志
; extern uchar time[22]; //初始时间设置 (未处理)
; extern uchar gas_type; //气体类型
; extern uchar unit_chroma; //浓度单位
; extern uchar denglu ; // 登录界面标志
; extern uchar pass[6]; //存放E2中读出的密码
; //TWI 相关全局变量
; extern uchar i2c_rd_buff[32]; //i2c读出的数最初存放的地方
; extern uchar i2c_wt_buff[35]; //写
; extern uchar fhz;
; extern uchar flag_can;
; //开关机记录显示用
; extern uint addre2; //外部E2的当前地址
; extern uchar addre2hi; //地址高址
; extern uchar addre2lo; //地址低址
; extern uchar m;
;
; extern uint realaddr; //外部RAM中存放实时界面信息地址
; uint realaddr2=0x3000; //存RAM错误信息用
; uchar cn2=0;
;
; uchar first_alarm=0;
; uchar shoubao[9]; //首报
; uchar kk1=0; //等待接收32帧数用
; uchar yong=0; //判断CAN出错标志
; //uchar yy1=0;
; //故障,报警显示用实时地址
; uint guzhangaddr=0x6800; //故障地址 0x6800-0x7bff
; uint baojingaddr=0x0400; //报警地址 0x0400-0x67ff
; //存储用
; uint guzhangaddr2=0x6800; //故障地址 0x6800-0x7bff
; uint baojingaddr2=0x0400; //报警地址 0x0400-0x5b7f
;
; uint onaddr2=0; //开关机用,
; uchar jj=0; //判断第一次开机用 取外部E2故障,报警地址必须在存了开机记录之后!
; volatile uchar keyc=0;
;
; uchar firstuse1=0; //判断电源故障是不是第一次进入用
; uchar firstuse2=0;
; uchar firstuse3=0;
; uchar firstuse4=0; //亏电
; uchar hibao[32][4]; //高报
; uchar lobao[32][4]; //低报
; uchar detector[32][4]; //传感器
; uchar communicate[32][4]; //通讯
; uchar xuanbit[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
; uchar cannum=0;
;
; uint cuo1=0; //记录当前故障总数用
; uint cuo2=0; //记录当前报警总数用
; uint cuo3=0; // 实时界面用 实时报警,故障数
; uint cuo4=0; //实时界面用,基数
; uchar wunai=0; //自动搜索后第一次轮埙的数不要
; uchar wunai2=0; //节点投用
; uchar idnum;
; uchar can_cuo_flag[32]; //转换器故障 用
; uchar yure_flag=1; //预热标志
; struct
; {
; uchar bei; //备电
; uchar shi; //市电
; uchar cong; //从电
; }error;
; struct
; {
; uchar di[32][4]; //低报
; uchar tan[32][4]; //探测器
; uchar tong[32][4]; //通讯
; uchar gao[32][4]; //高报
; }rxerror;
; //CAN相关全局变量
; uchar canuse[4]={0xff,0xff,0xff,0xff}; //转换器的投用情况 按位
; uchar detuse[33][4]; //所有485节点的投用情况,0,1按位起作用
; uchar det_link[33] ; //探测器或联动模块选择字节段,按位起作用
; uchar trans_complete=0; //一个转换器下所有数据上传结束标志 //去掉了volatile
; uchar rx_buff[13]; //接收转换器上传的数据
; uchar zhongbuff[33][10]; // 一次接收的转换器的数 zhongbuff[33][n]接收错误总数
; //时间设置相关变量
; uchar time_set[7]; //存已处理的设置时间,日期
; uchar realtimebuff[7]; //存中断INT6中读取的实时时间
; uchar minute=0; //分钟,实时关机记录函数用
; uchar minute2=0;
; uchar minute3=0;
; uchar second=0; //秒
; //GAL门相关全局变量
; uchar gal1data=0x00 ;
; uchar gal2data=0x7f ; //继电器控制信号1,联动模块故障1,联动输出都为1
; uchar gal3data=0x77 ; //指示灯为共阳极的
; uchar gal4data=0x6a ; //默认正常
; uchar gal5data=0xff ;
; /****************端口的初始化**未用的引脚使用内部上拉*************/
; void port_init(void)
; {
.dbline 102
; PORTA = 0x00;
clr R2
out 0x1b,R2
.dbline 103
; DDRA = 0x00;
out 0x1a,R2
.dbline 104
; PORTB = 0xe1; //PB0MCP2510片选信号0xe1
ldi R24,225
out 0x18,R24
.dbline 105
; DDRB = 0x17; //CAN相关的控制信号0x17
ldi R24,23
out 0x17,R24
.dbline 106
; PORTC = 0x00; //m103 output only
out 0x15,R2
.dbline 107
; DDRC = 0x00; //C口作为外部寻址地址的高八位
out 0x14,R2
.dbline 108
; PORTD = 0x50; //20
ldi R24,80
out 0x12,R24
.dbline 109
; DDRD = 0x00; //打印机BUSY PD7,消音键输入PD6,液晶忙 PD5输入
out 0x11,R2
.dbline 110
; PORTE = 0x84;
ldi R24,132
out 0x3,R24
.dbline 111
; DDRE = 0x3C;
ldi R24,60
out 0x2,R24
.dbline 112
; PORTF = 0x00;
sts 98,R2
.dbline 113
; DDRF = 0x00; //PF0-PF3输入输出通道关联用
sts 97,R2
.dbline 114
; PORTG = 0x00; //控制看门狗中断的引脚PG4未开启呢
sts 101,R2
.dbline 115
; DDRG = 0x00; //00是没有加入看门 狗0x10加入
sts 100,R2
.dbline 116
; DDRG = 0x10;
ldi R24,16
sts 100,R24
.dbline -2
L3:
.dbline 0 ; func end
ret
.dbend
.dbfunc e uart1_init _uart1_init fV
.even
_uart1_init::
.dbline -1
.dbline 122
; }
; //UART1 initialize, desired baud rate: 19200
; // actual: baud rate:19200 (0.2%)
; // char size: 8 bit parity: Disabled
; void uart1_init(void)
; {
.dbline 123
; UCSR1B = 0x00; //disable while setting baud rate
clr R2
sts 154,R2
.dbline 124
; UCSR1A = 0x00;
sts 155,R2
.dbline 125
; UCSR1C =(1<<UCSZ11)|(1<<UCSZ10);
ldi R24,6
sts 157,R24
.dbline 126
; UBRR1L=35;//25;//(fosc/16/(baud-1))%256;
ldi R24,35
sts 153,R24
.dbline 127
; UBRR1H=0;//(fosc/16/(baud-1))/256;
sts 152,R2
.dbline 128
; UCSR1B =(1<<RXEN1)|(1<<TXEN1)|(1<<RXCIE1);
ldi R24,152
sts 154,R24
.dbline -2
L4:
.dbline 0 ; func end
ret
.dbend
.dbfunc e uart0_init _uart0_init fV
.even
_uart0_init::
.dbline -1
.dbline 132
; }
; // desired baud rate:4800 ,9 bit
; void uart0_init(void)
; {
.dbline 133
; UCSR0B = 0x00; //disable while setting baud rate
clr R2
out 0xa,R2
.dbline 134
; UCSR0A = 0x00;
out 0xb,R2
.dbline 135
; UCSR0C = 0x06;
ldi R24,6
sts 149,R24
.dbline 136
; UBRR0L = 0x8F; //set baud rate lo
ldi R24,143
out 0x9,R24
.dbline 137
; UBRR0H = 0x00; //set baud rate hi
sts 144,R2
.dbline 138
; UCSR0B = 0x1c;
ldi R24,28
out 0xa,R24
.dbline -2
L5:
.dbline 0 ; func end
ret
.dbend
.dbfunc e spi_init _spi_init fV
.even
_spi_init::
.dbline -1
.dbline 142
; }
; //SPI initialize
; void spi_init(void)
; {
.dbline 143
; SPCR = 0x50; //setup SPI
ldi R24,80
out 0xd,R24
.dbline 144
; SPSR = 0x00; //setup SPI
clr R2
out 0xe,R2
.dbline -2
L6:
.dbline 0 ; func end
ret
.dbend
.dbfunc e timer1_init _timer1_init fV
.even
_timer1_init::
.dbline -1
.dbline 150
; }
; //TIMER1 initialize - prescale:Stop
; // WGM: 0) Normal, TOP=0xFFFF
; // desired value: 1Hz// actual value: Out of range
; void timer1_init(void)
; {
.dbline 151
; TCCR1B = 0x00; //stop
clr R2
out 0x2e,R2
.dbline 152
; TCNT1H = 0xFF /*INVALID SETTING*/; //setup
ldi R24,255
out 0x2d,R24
.dbline 153
; TCNT1L = 0xFE /*INVALID SETTING*/;
ldi R24,254
out 0x2c,R24
.dbline 154
; OCR1AH = 0x00 /*INVALID SETTING*/;
out 0x2b,R2
.dbline 155
; OCR1AL = 0x00 /*INVALID SETTING*/;
out 0x2a,R2
.dbline 156
; OCR1BH = 0x00 /*INVALID SETTING*/;
out 0x29,R2
.dbline 157
; OCR1BL = 0x00 /*INVALID SETTING*/;
out 0x28,R2
.dbline 158
; OCR1CH = 0x00 /*INVALID SETTING*/;
sts 121,R2
.dbline 159
; OCR1CL = 0x00 /*INVALID SETTING*/;
sts 120,R2
.dbline 160
; ICR1H = 0x00 /*INVALID SETTING*/;
out 0x27,R2
.dbline 161
; ICR1L = 0x00 /*INVALID SETTING*/;
out 0x26,R2
.dbline 162
; TCCR1A = 0x00;
out 0x2f,R2
.dbline 163
; TCCR1B = 0x06; //start Timer
ldi R24,6
out 0x2e,R24
.dbline -2
L7:
.dbline 0 ; func end
ret
.dbend
.dbfunc e init_can _init_can fV
.even
_init_can::
.dbline -1
.dbline 167
; }
; //MCP2510初始化
; void init_can(void)
; {
.dbline 168
; write_MCP (CANCTRL, 0x80); //0x80, 配置模式
ldi R18,128
ldi R16,15
xcall _write_MCP
.dbline 184
; /*
; //每发一贞转换器要延时2ms
; write_MCP (CNF1, 0x03); // Set CAN-Baudrate 125 kBaud
; //同步跳转宽度SJW=1*TQ、
; write_MCP (CNF2, 0x90); // 8MHz
; //
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -