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

📄 irr.lst

📁 16个单片机c语言实验程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
     271 BC2C      OUT	0x2C,R2
(0060) TCCR1A=0x00;   //普通模式
     272 BC2F      OUT	0x2F,R2
(0061) TCCR1B=0x05;   //1024分频
     273 E085      LDI	R24,5
     274 BD8E      OUT	0x2E,R24
     275 9508      RET
_main:
     276 9722      SBIW	R28,2
(0062) }
(0063) 
(0064) //主函数
(0065) main()
(0066) {
(0067) //初始化端口
(0068) DDRA=0xff;
     277 EF8F      LDI	R24,0xFF
     278 BB8A      OUT	0x1A,R24
(0069) PORTA=0x00;
     279 2422      CLR	R2
     27A BA2B      OUT	0x1B,R2
(0070) DDRB=0xff;
     27B BB87      OUT	0x17,R24
(0071) DDRD=0x00;         //中断输入
     27C BA21      OUT	0x11,R2
(0072) PORTD=0xff;        //内部上拉
     27D BB82      OUT	0x12,R24
(0073) 
(0074) t1_init();         //定时器t1初始化
     27E DFEF      RCALL	_t1_init
(0075) 
(0076) MCUCR = 0x02;      //下降沿中断
     27F E082      LDI	R24,2
     280 BF85      OUT	0x35,R24
(0077) GICR  = 0x40;      //开外部中断int_0
     281 E480      LDI	R24,0x40
     282 BF8B      OUT	0x3B,R24
(0078) TIMSK = 0x00;      
     283 2422      CLR	R2
     284 BE29      OUT	0x39,R2
(0079) SREG=0x80;         //开全局中断
     285 E880      LDI	R24,0x80
     286 BF8F      OUT	0x3F,R24
(0080) s_s=1;             //开机进行一次显示
     287 E081      LDI	R24,1
     288 9380 0061 STS	s_s,R24
     28A C142      RJMP	0x03CD
(0081) while(1)
(0082)     {
(0083) 	ds=TCNT1L;
     28B B42C      IN	R2,0x2C
     28C 9220 0064 STS	ds,R2
(0084) 	if(ds>250)     //定时器超时,接收复位
     28E EF8A      LDI	R24,0xFA
     28F 1582      CP	R24,R2
     290 F4A0      BCC	0x02A5
(0085) 	  {
(0086) 	  TCNT1L=0;
     291 2422      CLR	R2
     292 BC2C      OUT	0x2C,R2
(0087) 	  irr_b=0;
     293 9220 0060 STS	irr_b,R2
(0088) 	  da=0;
     295 E080      LDI	R24,0
     296 E090      LDI	R25,0
     297 E0A0      LDI	R26,0
     298 E0B0      LDI	R27,0
     299 9390 0066 STS	da+1,R25
     29B 9380 0065 STS	da,R24
     29D 93B0 0068 STS	da+3,R27
     29F 93A0 0067 STS	da+2,R26
(0089)       wb=0; 
     2A1 9220 0062 STS	wb,R2
(0090)       s_s=0;
     2A3 9220 0061 STS	s_s,R2
(0091) 	  }
(0092) 	if(s_s==1)     //显示开关打开,开始显示
     2A5 9180 0061 LDS	R24,s_s
     2A7 3081      CPI	R24,1
     2A8 F009      BEQ	0x02AA
     2A9 C123      RJMP	0x03CD
(0093) 	  {
(0094) 	  SREG=0x00;     //关闭全局中断
     2AA 2422      CLR	R2
     2AB BE2F      OUT	0x3F,R2
(0095)       LcdInit();     //1602初始化
     2AC DDF5      RCALL	_LcdInit
(0096) 	  //显示设备码
(0097) 	  d1=da>>24;
     2AD E188      LDI	R24,0x18
     2AE E090      LDI	R25,0
     2AF 9120 0067 LDS	R18,da+2
     2B1 9130 0068 LDS	R19,da+3
     2B3 9100 0065 LDS	R16,da
     2B5 9110 0066 LDS	R17,da+1
     2B7 938A      ST	R24,-Y
     2B8 940E 03D0 CALL	asr32
     2BA 9300 0071 STS	d1,R16
(0098) 	  ten_1=d1/100;
     2BC E614      LDI	R17,0x64
     2BD 940E 03DE CALL	div8u
     2BF 9300 006D STS	ten_1,R16
(0099) 	  ten_2=(d1-(100*ten_1))/10;
     2C1 2E20      MOV	R2,R16
     2C2 E684      LDI	R24,0x64
     2C3 9D82      MUL	R24,R2
     2C4 9100 0071 LDS	R16,d1
     2C6 1900      SUB	R16,R0
     2C7 E01A      LDI	R17,0xA
     2C8 940E 03DE CALL	div8u
     2CA 9300 006C STS	ten_2,R16
(0100) 	  ten_3=d1-(100*ten_1)-ten_2*10;
     2CC 9020 006D LDS	R2,ten_1
     2CE E684      LDI	R24,0x64
     2CF 9D82      MUL	R24,R2
     2D0 9020 0071 LDS	R2,d1
     2D2 1820      SUB	R2,R0
     2D3 2E30      MOV	R3,R16
     2D4 E08A      LDI	R24,0xA
     2D5 9D83      MUL	R24,R3
     2D6 1820      SUB	R2,R0
     2D7 9220 006B STS	ten_3,R2
(0101) 	  WriteNum(1,0,ten_1);
     2D9 9020 006D LDS	R2,ten_1
     2DB 2433      CLR	R3
     2DC 8239      STD	Y+1,R3
     2DD 8228      STD	Y+0,R2
     2DE 2722      CLR	R18
     2DF 2733      CLR	R19
     2E0 E001      LDI	R16,1
     2E1 E010      LDI	R17,0
     2E2 DE6D      RCALL	_WriteNum
(0102) 	  WriteNum(1,1,ten_2);
     2E3 9020 006C LDS	R2,ten_2
     2E5 2433      CLR	R3
     2E6 8239      STD	Y+1,R3
     2E7 8228      STD	Y+0,R2
     2E8 E021      LDI	R18,1
     2E9 E030      LDI	R19,0
     2EA E001      LDI	R16,1
     2EB E010      LDI	R17,0
     2EC DE63      RCALL	_WriteNum
(0103) 	  WriteNum(1,2,ten_3);
     2ED 9020 006B LDS	R2,ten_3
     2EF 2433      CLR	R3
     2F0 8239      STD	Y+1,R3
     2F1 8228      STD	Y+0,R2
     2F2 E022      LDI	R18,2
     2F3 E030      LDI	R19,0
     2F4 E001      LDI	R16,1
     2F5 E010      LDI	R17,0
     2F6 DE59      RCALL	_WriteNum
(0104) 	  //显示设备码反码
(0105) 	  d1=da>>16;
     2F7 9020 0067 LDS	R2,da+2
     2F9 9030 0068 LDS	R3,da+3
     2FB 9220 0071 STS	d1,R2
(0106) 	  ten_1=d1/100;
     2FD E614      LDI	R17,0x64
     2FE 2D02      MOV	R16,R2
     2FF 940E 03DE CALL	div8u
     301 9300 006D STS	ten_1,R16
(0107) 	  ten_2=(d1-(100*ten_1))/10;
     303 2E20      MOV	R2,R16
     304 E684      LDI	R24,0x64
     305 9D82      MUL	R24,R2
     306 9100 0071 LDS	R16,d1
     308 1900      SUB	R16,R0
     309 E01A      LDI	R17,0xA
     30A 940E 03DE CALL	div8u
     30C 9300 006C STS	ten_2,R16
(0108) 	  ten_3=d1-(100*ten_1)-ten_2*10;
     30E 9020 006D LDS	R2,ten_1
     310 E684      LDI	R24,0x64
     311 9D82      MUL	R24,R2
     312 9020 0071 LDS	R2,d1
     314 1820      SUB	R2,R0
     315 2E30      MOV	R3,R16
     316 E08A      LDI	R24,0xA
     317 9D83      MUL	R24,R3
     318 1820      SUB	R2,R0
     319 9220 006B STS	ten_3,R2
(0109) 	  WriteNum(1,4,ten_1);
     31B 9020 006D LDS	R2,ten_1
     31D 2433      CLR	R3
     31E 8239      STD	Y+1,R3
     31F 8228      STD	Y+0,R2
     320 E024      LDI	R18,4
     321 E030      LDI	R19,0
     322 E001      LDI	R16,1
     323 E010      LDI	R17,0
     324 DE2B      RCALL	_WriteNum
(0110)   	  WriteNum(1,5,ten_2);
     325 9020 006C LDS	R2,ten_2
     327 2433      CLR	R3
     328 8239      STD	Y+1,R3
     329 8228      STD	Y+0,R2
     32A E025      LDI	R18,5
     32B E030      LDI	R19,0
     32C E001      LDI	R16,1
     32D E010      LDI	R17,0
     32E DE21      RCALL	_WriteNum
(0111) 	  WriteNum(1,6,ten_3);
     32F 9020 006B LDS	R2,ten_3
     331 2433      CLR	R3
     332 8239      STD	Y+1,R3
     333 8228      STD	Y+0,R2
     334 E026      LDI	R18,6
     335 E030      LDI	R19,0
     336 E001      LDI	R16,1
     337 E010      LDI	R17,0
     338 DE17      RCALL	_WriteNum
(0112) 	  //显示键码
(0113) 	  d1=da>>8;
     339 E088      LDI	R24,0x8
     33A E090      LDI	R25,0
     33B 9120 0067 LDS	R18,da+2
     33D 9130 0068 LDS	R19,da+3
     33F 9100 0065 LDS	R16,da
     341 9110 0066 LDS	R17,da+1
     343 938A      ST	R24,-Y
     344 940E 03D0 CALL	asr32
     346 9300 0071 STS	d1,R16
(0114) 	  ten_1=d1/100;
     348 E614      LDI	R17,0x64
     349 940E 03DE CALL	div8u
     34B 9300 006D STS	ten_1,R16
(0115) 	  ten_2=(d1-(100*ten_1))/10;
     34D 2E20      MOV	R2,R16
     34E E684      LDI	R24,0x64
     34F 9D82      MUL	R24,R2
     350 9100 0071 LDS	R16,d1
     352 1900      SUB	R16,R0
     353 E01A      LDI	R17,0xA
     354 940E 03DE CALL	div8u
     356 9300 006C STS	ten_2,R16
(0116) 	  ten_3=d1-(100*ten_1)-ten_2*10;
     358 9020 006D LDS	R2,ten_1
     35A E684      LDI	R24,0x64
     35B 9D82      MUL	R24,R2
     35C 9020 0071 LDS	R2,d1
     35E 1820      SUB	R2,R0
     35F 2E30      MOV	R3,R16
     360 E08A      LDI	R24,0xA
     361 9D83      MUL	R24,R3
     362 1820      SUB	R2,R0
     363 9220 006B STS	ten_3,R2
(0117) 	  WriteNum(1,8,ten_1);
     365 9020 006D LDS	R2,ten_1
     367 2433      CLR	R3
     368 8239      STD	Y+1,R3
     369 8228      STD	Y+0,R2
     36A E028      LDI	R18,0x8
     36B E030      LDI	R19,0
     36C E001      LDI	R16,1
     36D E010      LDI	R17,0
     36E DDE1      RCALL	_WriteNum
(0118) 	  WriteNum(1,9,ten_2);
     36F 9020 006C LDS	R2,ten_2
     371 2433      CLR	R3
     372 8239      STD	Y+1,R3
     373 8228      STD	Y+0,R2
     374 E029      LDI	R18,0x9
     375 E030      LDI	R19,0
     376 E001      LDI	R16,1
     377 E010      LDI	R17,0
     378 DDD7      RCALL	_WriteNum
(0119) 	  WriteNum(1,10,ten_3);
     379 9020 006B LDS	R2,ten_3
     37B 2433      CLR	R3
     37C 8239      STD	Y+1,R3
     37D 8228      STD	Y+0,R2
     37E E02A      LDI	R18,0xA
     37F E030      LDI	R19,0
     380 E001      LDI	R16,1
     381 E010      LDI	R17,0
     382 DDCD      RCALL	_WriteNum
(0120) 	  //显示键码反码
(0121) 	  d1=da;
     383 9020 0065 LDS	R2,da
     385 9030 0066 LDS	R3,da+1
     387 9220 0071 STS	d1,R2
(0122) 	  ten_1=d1/100;
     389 E614      LDI	R17,0x64
     38A 2D02      MOV	R16,R2
     38B 940E 03DE CALL	div8u
     38D 9300 006D STS	ten_1,R16
(0123) 	  ten_2=(d1-(100*ten_1))/10;
     38F 2E20      MOV	R2,R16
     390 E684      LDI	R24,0x64
     391 9D82      MUL	R24,R2
     392 9100 0071 LDS	R16,d1
     394 1900      SUB	R16,R0
     395 E01A      LDI	R17,0xA
     396 940E 03DE CALL	div8u
     398 9300 006C STS	ten_2,R16
(0124) 	  ten_3=d1-(100*ten_1)-ten_2*10;
     39A 9020 006D LDS	R2,ten_1
     39C E684      LDI	R24,0x64
     39D 9D82      MUL	R24,R2
     39E 9020 0071 LDS	R2,d1
     3A0 1820      SUB	R2,R0
     3A1 2E30      MOV	R3,R16
     3A2 E08A      LDI	R24,0xA
     3A3 9D83      MUL	R24,R3
     3A4 1820      SUB	R2,R0
     3A5 9220 006B STS	ten_3,R2
(0125) 	  WriteNum(1,12,ten_1);
     3A7 9020 006D LDS	R2,ten_1
     3A9 2433      CLR	R3
     3AA 8239      STD	Y+1,R3
     3AB 8228      STD	Y+0,R2
     3AC E02C      LDI	R18,0xC
     3AD E030      LDI	R19,0
     3AE E001      LDI	R16,1
     3AF E010      LDI	R17,0
     3B0 DD9F      RCALL	_WriteNum
(0126) 	  WriteNum(1,13,ten_2);
     3B1 9020 006C LDS	R2,ten_2
     3B3 2433      CLR	R3
     3B4 8239      STD	Y+1,R3
     3B5 8228      STD	Y+0,R2
     3B6 E02D      LDI	R18,0xD
     3B7 E030      LDI	R19,0
     3B8 E001      LDI	R16,1
     3B9 E010      LDI	R17,0
     3BA DD95      RCALL	_WriteNum
(0127) 	  WriteNum(1,14,ten_3);
     3BB 9020 006B LDS	R2,ten_3
     3BD 2433      CLR	R3
     3BE 8239      STD	Y+1,R3
     3BF 8228      STD	Y+0,R2
     3C0 E02E      LDI	R18,0xE
     3C1 E030      LDI	R19,0
     3C2 E001      LDI	R16,1
     3C3 E010      LDI	R17,0
     3C4 DD8B      RCALL	_WriteNum
(0128) 	  //复位D端口
(0129) 	  DDRD=0x00;    //中断输入
     3C5 2422      CLR	R2
     3C6 BA21      OUT	0x11,R2
(0130)       PORTD=0xff;   //内部上拉
     3C7 EF8F      LDI	R24,0xFF
     3C8 BB82      OUT	0x12,R24
(0131) 	  s_s=0;        //关闭显示开关
     3C9 9220 0061 STS	s_s,R2
(0132) 	  SREG=0x80;    //开全局中断
FILE: <library>
     3CB E880      LDI	R24,0x80
     3CC BF8F      OUT	0x3F,R24
     3CD CEBD      RJMP	0x028B
     3CE 9622      ADIW	R28,2
     3CF 9508      RET
asr32:
     3D0 920F      PUSH	R0
     3D1 9009      LD	R0,Y+
     3D2 2000      TST	R0
     3D3 F031      BEQ	0x03DA
     3D4 9535      ASR	R19
     3D5 9527      ROR	R18
     3D6 9517      ROR	R17
     3D7 9507      ROR	R16
     3D8 940A      DEC	R0
     3D9 CFF8      RJMP	0x03D2
     3DA 900F      POP	R0
     3DB 9508      RET
mod8u:
     3DC 9468      BSET	6
     3DD C001      RJMP	xdiv8u
div8u:
     3DE 94E8      BCLR	6
xdiv8u:
     3DF 932A      ST	R18,-Y
     3E0 92FA      ST	R15,-Y
     3E1 92EA      ST	R14,-Y
     3E2 24FF      CLR	R15
     3E3 24EE      CLR	R14
     3E4 E120      LDI	R18,0x10
     3E5 0F00      LSL	R16
     3E6 1CFF      ROL	R15
     3E7 1CEE      ROL	R14
     3E8 16E1      CP	R14,R17
     3E9 F010      BCS	0x03EC
     3EA 1AE1      SUB	R14,R17
     3EB 9503      INC	R16
     3EC 952A      DEC	R18
     3ED F7B9      BNE	0x03E5
     3EE F40E      BRTC	0x03F0
     3EF 2D0E      MOV	R16,R14
     3F0 90E9      LD	R14,Y+
     3F1 90F9      LD	R15,Y+
     3F2 9129      LD	R18,Y+
     3F3 9508      RET
push_xgsetF00C:
     3F4 937A      ST	R23,-Y
     3F5 936A      ST	R22,-Y
     3F6 935A      ST	R21,-Y
     3F7 934A      ST	R20,-Y
     3F8 92BA      ST	R11,-Y
     3F9 92AA      ST	R10,-Y
     3FA 9508      RET
pop_xgsetF00C:
     3FB 90A9      LD	R10,Y+
     3FC 90B9      LD	R11,Y+
     3FD 9149      LD	R20,Y+
     3FE 9159      LD	R21,Y+
     3FF 9169      LD	R22,Y+
     400 9179      LD	R23,Y+
     401 9508      RET
push_xgsetF03C:
     402 937A      ST	R23,-Y
     403 936A      ST	R22,-Y
     404 935A      ST	R21,-Y
     405 934A      ST	R20,-Y
     406 92DA      ST	R13,-Y
     407 92CA      ST	R12,-Y
     408 92BA      ST	R11,-Y
     409 92AA      ST	R10,-Y
     40A 9508      RET
pop_xgsetF03C:
     40B 90A9      LD	R10,Y+
     40C 90B9      LD	R11,Y+
     40D 90C9      LD	R12,Y+
     40E 90D9      LD	R13,Y+
     40F 9149      LD	R20,Y+
     410 9159      LD	R21,Y+
     411 9169      LD	R22,Y+
     412 9179      LD	R23,Y+
     413 9508      RET

⌨️ 快捷键说明

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