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

📄 main.s

📁 基于PIC单片机
💻 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 + -