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

📄 ac15-2.lst

📁 AVR学习资料
💻 LST
📖 第 1 页 / 共 3 页
字号:
    014A 0000      NOP
    014B 0000      NOP
    014C 0000      NOP
    014D 0000      NOP
    014E 0000      NOP
    014F 0000      NOP
    0150 0000      NOP
(0177) SDA_0;Some_NOP();
    0151 98A9      CBI	0x15,1
    0152 0000      NOP
    0153 0000      NOP
    0154 0000      NOP
    0155 0000      NOP
    0156 0000      NOP
    0157 0000      NOP
    0158 0000      NOP
    0159 0000      NOP
(0178) SCL_0;Some_NOP();
    015A 98A8      CBI	0x15,0
    015B 0000      NOP
    015C 0000      NOP
    015D 0000      NOP
    015E 0000      NOP
    015F 0000      NOP
    0160 0000      NOP
    0161 0000      NOP
    0162 0000      NOP
    0163 9508      RET
(0179) }					
(0180) //********************停止操作子函数*********************
(0181) void stop(void)			
(0182) {	DDRC=0x03;			
_stop:
    0164 E083      LDI	R24,3
    0165 BB84      OUT	0x14,R24
(0183) SDA_0;Some_NOP();
    0166 98A9      CBI	0x15,1
    0167 0000      NOP
    0168 0000      NOP
    0169 0000      NOP
    016A 0000      NOP
    016B 0000      NOP
    016C 0000      NOP
    016D 0000      NOP
    016E 0000      NOP
(0184) SCL_1;Some_NOP();
    016F 9AA8      SBI	0x15,0
    0170 0000      NOP
    0171 0000      NOP
    0172 0000      NOP
    0173 0000      NOP
    0174 0000      NOP
    0175 0000      NOP
    0176 0000      NOP
    0177 0000      NOP
(0185) SDA_1;Some_NOP();
    0178 9AA9      SBI	0x15,1
    0179 0000      NOP
    017A 0000      NOP
    017B 0000      NOP
    017C 0000      NOP
    017D 0000      NOP
    017E 0000      NOP
    017F 0000      NOP
    0180 0000      NOP
    0181 9508      RET
(0186) }				
(0187) //************应答子函数*************
(0188) void ack(void)			
(0189) {	DDRC=0x03;				
_ack:
    0182 E083      LDI	R24,3
    0183 BB84      OUT	0x14,R24
(0190) SCL_1;Some_NOP();
    0184 9AA8      SBI	0x15,0
    0185 0000      NOP
    0186 0000      NOP
    0187 0000      NOP
    0188 0000      NOP
    0189 0000      NOP
    018A 0000      NOP
    018B 0000      NOP
    018C 0000      NOP
(0191) SCL_0;Some_NOP();
    018D 98A8      CBI	0x15,0
    018E 0000      NOP
    018F 0000      NOP
    0190 0000      NOP
    0191 0000      NOP
    0192 0000      NOP
    0193 0000      NOP
    0194 0000      NOP
    0195 0000      NOP
    0196 9508      RET
_shift8:
  j                    --> R20
  i                    --> R22
  a                    --> R16
    0197 940E044A  CALL	push_gset2
(0192) }					
(0193) //*************写入8位子函数*************
(0194) void shift8(char a)		
(0195) {					
(0196) uchar i,j;			
(0197) DDRC=0x03;
    0199 E083      LDI	R24,3
    019A BB84      OUT	0x14,R24
(0198) com_data=a;			
    019B 93000061  STS	com_data,R16
(0199) for(i=0;i<8;i++)	
    019D 2766      CLR	R22
    019E C01F      RJMP	0x01BE
(0200) {	
(0201) j=com_data&0x80;
    019F 91400061  LDS	R20,com_data
    01A1 7840      ANDI	R20,0x80
(0202) if(j==0)SDA_0;
    01A2 F411      BNE	0x01A5
    01A3 98A9      CBI	0x15,1
    01A4 C001      RJMP	0x01A6
(0203) else SDA_1;
    01A5 9AA9      SBI	0x15,1
(0204) 
(0205) SCL_1;Some_NOP();
    01A6 9AA8      SBI	0x15,0
    01A7 0000      NOP
    01A8 0000      NOP
    01A9 0000      NOP
    01AA 0000      NOP
    01AB 0000      NOP
    01AC 0000      NOP
    01AD 0000      NOP
    01AE 0000      NOP
(0206) SCL_0;Some_NOP();
    01AF 98A8      CBI	0x15,0
    01B0 0000      NOP
    01B1 0000      NOP
    01B2 0000      NOP
    01B3 0000      NOP
    01B4 0000      NOP
    01B5 0000      NOP
    01B6 0000      NOP
    01B7 0000      NOP
(0207) com_data=com_data<<1;		
    01B8 90200061  LDS	R2,com_data
    01BA 0C22      LSL	R2
    01BB 92200061  STS	com_data,R2
    01BD 9563      INC	R22
    01BE 3068      CPI	R22,0x8
    01BF F2F8      BCS	0x019F
    01C0 940E043B  CALL	pop_gset2
    01C2 9508      RET
_rd_24c01:
  command              --> R20
  i                    --> R20
  a                    --> R22
    01C3 940E044A  CALL	push_gset2
    01C5 2F60      MOV	R22,R16
(0208) }					
(0209) }					
(0210) //**************读24C01A中a地址单元的数据************
(0211) uchar rd_24c01(char a)		
(0212) {					
(0213) uchar i,command;		
(0214) DDRC=0x03;
    01C6 E083      LDI	R24,3
    01C7 BB84      OUT	0x14,R24
(0215) SDA_1;Some_NOP();
    01C8 9AA9      SBI	0x15,1
    01C9 0000      NOP
    01CA 0000      NOP
    01CB 0000      NOP
    01CC 0000      NOP
    01CD 0000      NOP
    01CE 0000      NOP
    01CF 0000      NOP
    01D0 0000      NOP
(0216) SCL_0;Some_NOP();
    01D1 98A8      CBI	0x15,0
    01D2 0000      NOP
    01D3 0000      NOP
    01D4 0000      NOP
    01D5 0000      NOP
    01D6 0000      NOP
    01D7 0000      NOP
    01D8 0000      NOP
    01D9 0000      NOP
(0217) start();				
    01DA DF62      RCALL	_start
(0218) command=160;			
    01DB EA40      LDI	R20,0xA0
(0219) shift8(command);		
    01DC 2F04      MOV	R16,R20
    01DD DFB9      RCALL	_shift8
(0220) ack();				
    01DE DFA3      RCALL	_ack
(0221) shift8(a);			
    01DF 2F06      MOV	R16,R22
    01E0 DFB6      RCALL	_shift8
(0222) ack();				
    01E1 DFA0      RCALL	_ack
(0223) start();				
    01E2 DF5A      RCALL	_start
(0224) command=161;			
    01E3 EA41      LDI	R20,0xA1
(0225) shift8(command);		
    01E4 2F04      MOV	R16,R20
    01E5 DFB1      RCALL	_shift8
(0226) ack();				
    01E6 DF9B      RCALL	_ack
(0227) 
(0228) SDA_1;Some_NOP();	
    01E7 9AA9      SBI	0x15,1
    01E8 0000      NOP
    01E9 0000      NOP
    01EA 0000      NOP
    01EB 0000      NOP
    01EC 0000      NOP
    01ED 0000      NOP
    01EE 0000      NOP
    01EF 0000      NOP
(0229) for(i=0;i<8;i++)			
    01F0 2744      CLR	R20
    01F1 C026      RJMP	0x0218
(0230) {
(0231) DDRC=0x01;				
    01F2 E081      LDI	R24,1
    01F3 BB84      OUT	0x14,R24
(0232) com_data=com_data<<1;		
    01F4 90200061  LDS	R2,com_data
    01F6 0C22      LSL	R2
    01F7 92200061  STS	com_data,R2
(0233) SCL_1;Some_NOP();	
    01F9 9AA8      SBI	0x15,0
    01FA 0000      NOP
    01FB 0000      NOP
    01FC 0000      NOP
    01FD 0000      NOP
    01FE 0000      NOP
    01FF 0000      NOP
    0200 0000      NOP
    0201 0000      NOP
(0234) if(PIN_SDA==0)com_data&=0xfe;
    0202 9999      SBIC	0x13,1
    0203 C005      RJMP	0x0209
    0204 2D82      MOV	R24,R2
    0205 7F8E      ANDI	R24,0xFE
    0206 93800061  STS	com_data,R24
    0208 C005      RJMP	0x020E
(0235) else com_data|=0x01;
    0209 91800061  LDS	R24,com_data
    020B 6081      ORI	R24,1
    020C 93800061  STS	com_data,R24
(0236) SCL_0;Some_NOP();
    020E 98A8      CBI	0x15,0
    020F 0000      NOP
    0210 0000      NOP
    0211 0000      NOP
    0212 0000      NOP
    0213 0000      NOP
    0214 0000      NOP
    0215 0000      NOP
    0216 0000      NOP
    0217 9543      INC	R20
    0218 3048      CPI	R20,0x8
    0219 F2C0      BCS	0x01F2
(0237) }					
(0238) stop();				
    021A DF49      RCALL	_stop
(0239) return(com_data);	
    021B 91000061  LDS	R16,com_data
    021D 940E043B  CALL	pop_gset2
    021F 9508      RET
_wr_24c01:
  command              --> R10
  b                    --> R20
  a                    --> R22
    0220 940E0448  CALL	push_gset3
    0222 2F42      MOV	R20,R18
    0223 2F60      MOV	R22,R16
(0240) }					
(0241) //********将RAM中b地址单元的数据写入24C01A中a地址单元中***********
(0242) void wr_24c01(char a,char b)	
(0243) {					
(0244) uchar command;		
(0245) DDRC=0x03;
    0224 E083      LDI	R24,3
    0225 BB84      OUT	0x14,R24
(0246) SDA_1;Some_NOP();
    0226 9AA9      SBI	0x15,1
    0227 0000      NOP
    0228 0000      NOP
    0229 0000      NOP
    022A 0000      NOP
    022B 0000      NOP
    022C 0000      NOP
    022D 0000      NOP
    022E 0000      NOP
(0247) SCL_0;Some_NOP();
    022F 98A8      CBI	0x15,0
    0230 0000      NOP
    0231 0000      NOP
    0232 0000      NOP
    0233 0000      NOP
    0234 0000      NOP
    0235 0000      NOP
    0236 0000      NOP
    0237 0000      NOP
(0248) start();				
    0238 DF04      RCALL	_start
(0249) command=160;			
    0239 EA80      LDI	R24,0xA0
    023A 2EA8      MOV	R10,R24
(0250) shift8(command);		
    023B 2F08      MOV	R16,R24
    023C DF5A      RCALL	_shift8
(0251) ack();				
    023D DF44      RCALL	_ack
(0252) shift8(a);				
    023E 2F06      MOV	R16,R22
    023F DF57      RCALL	_shift8
(0253) ack();				
    0240 DF41      RCALL	_ack
(0254) shift8(b);				
    0241 2F04      MOV	R16,R20
    0242 DF54      RCALL	_shift8
(0255) ack();				
    0243 DF3E      RCALL	_ack
(0256) stop();				
    0244 DF1F      RCALL	_stop
(0257) Some_NOP();
    0245 0000      NOP
    0246 0000      NOP
    0247 0000      NOP
    0248 0000      NOP
    0249 0000      NOP
    024A 0000      NOP
    024B 0000      NOP
    024C 0000      NOP
    024D 940E043E  CALL	pop_gset3
    024F 9508      RET
_delay_iic:
  i                    --> R20
  n                    --> R16
    0250 940E044C  CALL	push_gset1
(0258) }					
(0259) //**************延时子函数***********
(0260) void delay_iic(int n)		
(0261) {					
(0262) int i;				
(0263) for(i=1;i<n;i++){;}		
    0252 E041      LDI	R20,1
    0253 E050      LDI	R21,0
    0254 C002      RJMP	0x0257
    0255 5F4F      SUBI	R20,0xFF
    0256 4F5F      SBCI	R21,0xFF
    0257 1740      CP	R20,R16
    0258 0751      CPC	R21,R17
    0259 F3DC      BLT	0x0255
    025A 940E044F  CALL	pop_gset1
    025C 9508      RET
(0264) }					
(0265) 
(0266) /**************定时器1初始化****************/
(0267) void timer1_init(void)
(0268) {
(0269)  TCNT1H = 0xF3; //setup
_timer1_init:
    025D EF83      LDI	R24,0xF3
    025E BD8D      OUT	0x2D,R24
(0270)  TCNT1L = 0xCB;
    025F EC8B      LDI	R24,0xCB
    0260 BD8C      OUT	0x2C,R24
(0271)  TCCR1B = 0x04; //start Timer
    0261 E084      LDI	R24,4
    0262 BD8E      OUT	0x2E,R24
    0263 9508      RET
_main:
  key_val              --> R22
    0264 9722      SBIW	R28,2
(0272) }
(0273) //******************************************
(0274) void main(void)				
(0275) {
(0276)  	 uchar key_val;	
(0277) 	 init_devices();
    0265 D1B3      RCALL	_init_devices
(0278)     Delay_nms(400);			
    0266 E900      LDI	R16,0x90
    0267 E011      LDI	R17,1
    0268 DEA0      RCALL	_Delay_nms
(0279) 	InitLcd();			
    0269 DE3D      RCALL	_InitLcd
(0280) 	LcdWriteCommand(0x01,1); 
    026A E021      LDI	R18,1
    026B E001      LDI	R16,1
    026C DE5C      RCALL	_LcdWriteCommand
(0281) 	LcdWriteCommand(0x0c,1); 
    026D E021      LDI	R18,1
    026E E00C      LDI	R16,0xC
    026F DE59      RCALL	_LcdWriteCommand
(0282) 	ePutstr(0,0,str0);  
    0270 E584      LDI	R24,0x54
    0271 E090      LDI	R25,0
    0272 8399      STD	Y+1,R25
    0273 8388      STD	Y+0,R24
    0274 2722      CLR	R18
    0275 2700      CLR	R16
    0276 DDE5      RCALL	_ePutstr
(0283) 	Delay_nms(10);
    0277 E00A      LDI	R16,0xA
    0278 E010      LDI	R17,0
    0279 DE8F      RCALL	_Delay_nms
(0284) 	ePutstr(0,1,str1);   
    027A E685      LDI	R24,0x65
    027B E090      LDI	R25,0
    027C 8399      STD	Y+1,R25
    027D 8388      STD	Y+0,R24
    027E E021      LDI	R18,1
    027F 2700      CLR	R16
    0280 DDDB      RCALL	_ePutstr
(0285) 	Delay_nms(10);
    0281 E00A      LDI	R16,0xA
    0282 E010      LDI	R17,0
    0283 DE85      RCALL	_Delay_nms
    0284 C142      RJMP	0x03C7
(0286) 	/********************************************/
(0287) 		while(1)              
(0288) 		{
(0289) 		   DisplayOneChar(6,0,(time1.hour/10)+0x30);
    0285 E01A      LDI	R17,0xA
    0286 91000066  LDS	R16,time1
    0288 940E0425  CALL	div8u
    028A 2F80      MOV	R24,R16
    028B 5D80      SUBI	R24,0xD0
    028C 8388      STD	Y+0,R24
    028D 2722      CLR	R18
    028E E006      LDI	R16,6
    028F DE0B      RCALL	_DisplayOneChar
(0290) 		   Delay_nms(10);
    0290 E00A      LDI	R16,0xA
    0291 E010      LDI	R17,0
    0292 DE76      RCALL	_Delay_nms
(0291) 		   DisplayOneChar(7,0,(time1.hour%10)+0x30);
    0293 E01A      LDI	R17,0xA
    0294 91000066  LDS	R16,time1
    0296 940E0423  CALL	mod8u
    0298 2F80      MOV	R24,R16
    0299 5D80      SUBI	R24,0xD0
    029A 8388      STD	Y+0,R24
    029B 2722      CLR	R18
    029C E007      LDI	R16,7
    029D DDFD      RCALL	_DisplayOneChar
(0292) 		   Delay_nms(10); 
    029E E00A      LDI	R16,0xA
    029F E010      LDI	R17,0
    02A0 DE68      RCALL	_Delay_nms
(0293) 		   DisplayOneChar(9,0,(time1.min/10)+0x30);
    02A1 E01A      LDI	R17,0xA
    02A2 91000067  LDS	R16,time1+1
    02A4 940E0425  CALL	div8u
    02A6 2F80      MOV	R24,R16
    02A7 5D80      SUBI	R24,0xD0
    02A8 8388      STD	Y+0,R24
    02A9 2722      CLR	R18
    02AA E009      LDI	R16,0x9
    02AB DDEF      RCALL	_DisplayOneChar
(0294) 		   Delay_nms(10); 
    02AC E00A      LDI	R16,0xA
    02AD E010      LDI	R17,0
    02AE DE5A      RCALL	_Delay_nms

⌨️ 快捷键说明

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