📄 m16.lst
字号:
0238 DE68 RCALL _delay_nms
0239 98C0 CBI 0x18,0
023A 9AC2 SBI 0x18,2
023B 9AC1 SBI 0x18,1
023C 9AC3 SBI 0x18,3
023D E604 LDI R16,0x64
023E E010 LDI R17,0
023F DE61 RCALL _delay_nms
0240 98C0 CBI 0x18,0
0241 98C2 CBI 0x18,2
0242 9AC1 SBI 0x18,1
0243 9AC3 SBI 0x18,3
0244 E604 LDI R16,0x64
0245 E010 LDI R17,0
0246 DE5A RCALL _delay_nms
0247 98C0 CBI 0x18,0
0248 9AC2 SBI 0x18,2
0249 9AC1 SBI 0x18,1
024A 9AC3 SBI 0x18,3
024B E604 LDI R16,0x64
024C E010 LDI R17,0
024D DE53 RCALL _delay_nms
024E 98C0 CBI 0x18,0
024F 9AC2 SBI 0x18,2
0250 98C1 CBI 0x18,1
0251 9AC3 SBI 0x18,3
0252 E604 LDI R16,0x64
0253 E010 LDI R17,0
0254 DE4C RCALL _delay_nms
0255 98C1 CBI 0x18,1
0256 9AC2 SBI 0x18,2
0257 9AC3 SBI 0x18,3
0258 9AC0 SBI 0x18,0
0259 E604 LDI R16,0x64
025A E010 LDI R17,0
025B DE45 RCALL _delay_nms
025C 98C1 CBI 0x18,1
025D 9AC2 SBI 0x18,2
025E 9AC3 SBI 0x18,3
025F 98C0 CBI 0x18,0
0260 E604 LDI R16,0x64
0261 E010 LDI R17,0
0262 DE3E RCALL _delay_nms
0263 98C1 CBI 0x18,1
0264 9AC2 SBI 0x18,2
0265 9AC3 SBI 0x18,3
0266 9AC0 SBI 0x18,0
0267 E604 LDI R16,0x64
0268 E010 LDI R17,0
0269 DE37 RCALL _delay_nms
026A 98C1 CBI 0x18,1
026B 9AC2 SBI 0x18,2
026C 98C3 CBI 0x18,3
026D 9AC0 SBI 0x18,0
026E E604 LDI R16,0x64
026F E010 LDI R17,0
0270 DE30 RCALL _delay_nms
0271 98C3 CBI 0x18,3
0272 9AC2 SBI 0x18,2
0273 9AC1 SBI 0x18,1
0274 9AC0 SBI 0x18,0
0275 E604 LDI R16,0x64
0276 E010 LDI R17,0
0277 DE29 RCALL _delay_nms
0278 98C3 CBI 0x18,3
0279 9AC2 SBI 0x18,2
027A 98C1 CBI 0x18,1
027B 9AC0 SBI 0x18,0
027C E604 LDI R16,0x64
027D E010 LDI R17,0
027E DE22 RCALL _delay_nms
027F 5041 SUBI R20,1
0280 4050 SBCI R21,0
0281 3040 CPI R20,0
0282 0745 CPC R20,R21
0283 F009 BEQ 0x0285
0284 CF8A RJMP 0x020F
(0364) for (i=3;i>0;i--){LED1;LED14;LED4;LED41;LED4;LED43;LED3;LED34;LED3;LED32;LED2;LED23;LED2;LED21;LED1;LED12}
0285 E043 LDI R20,3
0286 E050 LDI R21,0
0287 C072 RJMP 0x02FA
0288 98C3 CBI 0x18,3
0289 9AC2 SBI 0x18,2
028A 9AC1 SBI 0x18,1
028B 9AC0 SBI 0x18,0
028C E604 LDI R16,0x64
028D E010 LDI R17,0
028E DE12 RCALL _delay_nms
028F 98C3 CBI 0x18,3
0290 9AC2 SBI 0x18,2
0291 98C1 CBI 0x18,1
0292 9AC0 SBI 0x18,0
0293 E604 LDI R16,0x64
0294 E010 LDI R17,0
0295 DE0B RCALL _delay_nms
0296 98C1 CBI 0x18,1
0297 9AC2 SBI 0x18,2
0298 9AC3 SBI 0x18,3
0299 9AC0 SBI 0x18,0
029A E604 LDI R16,0x64
029B E010 LDI R17,0
029C DE04 RCALL _delay_nms
029D 98C1 CBI 0x18,1
029E 9AC2 SBI 0x18,2
029F 98C3 CBI 0x18,3
02A0 9AC0 SBI 0x18,0
02A1 E604 LDI R16,0x64
02A2 E010 LDI R17,0
02A3 DDFD RCALL _delay_nms
02A4 98C1 CBI 0x18,1
02A5 9AC2 SBI 0x18,2
02A6 9AC3 SBI 0x18,3
02A7 9AC0 SBI 0x18,0
02A8 E604 LDI R16,0x64
02A9 E010 LDI R17,0
02AA DDF6 RCALL _delay_nms
02AB 98C1 CBI 0x18,1
02AC 9AC2 SBI 0x18,2
02AD 9AC3 SBI 0x18,3
02AE 98C0 CBI 0x18,0
02AF E604 LDI R16,0x64
02B0 E010 LDI R17,0
02B1 DDEF RCALL _delay_nms
02B2 98C0 CBI 0x18,0
02B3 9AC2 SBI 0x18,2
02B4 9AC1 SBI 0x18,1
02B5 9AC3 SBI 0x18,3
02B6 E604 LDI R16,0x64
02B7 E010 LDI R17,0
02B8 DDE8 RCALL _delay_nms
02B9 98C0 CBI 0x18,0
02BA 9AC2 SBI 0x18,2
02BB 98C1 CBI 0x18,1
02BC 9AC3 SBI 0x18,3
02BD E604 LDI R16,0x64
02BE E010 LDI R17,0
02BF DDE1 RCALL _delay_nms
02C0 98C0 CBI 0x18,0
02C1 9AC2 SBI 0x18,2
02C2 9AC1 SBI 0x18,1
02C3 9AC3 SBI 0x18,3
02C4 E604 LDI R16,0x64
02C5 E010 LDI R17,0
02C6 DDDA RCALL _delay_nms
02C7 98C0 CBI 0x18,0
02C8 98C2 CBI 0x18,2
02C9 9AC1 SBI 0x18,1
02CA 9AC3 SBI 0x18,3
02CB E604 LDI R16,0x64
02CC E010 LDI R17,0
02CD DDD3 RCALL _delay_nms
02CE 98C2 CBI 0x18,2
02CF 9AC3 SBI 0x18,3
02D0 9AC1 SBI 0x18,1
02D1 9AC0 SBI 0x18,0
02D2 E604 LDI R16,0x64
02D3 E010 LDI R17,0
02D4 DDCC RCALL _delay_nms
02D5 98C2 CBI 0x18,2
02D6 9AC3 SBI 0x18,3
02D7 9AC1 SBI 0x18,1
02D8 98C0 CBI 0x18,0
02D9 E604 LDI R16,0x64
02DA E010 LDI R17,0
02DB DDC5 RCALL _delay_nms
02DC 98C2 CBI 0x18,2
02DD 9AC3 SBI 0x18,3
02DE 9AC1 SBI 0x18,1
02DF 9AC0 SBI 0x18,0
02E0 E604 LDI R16,0x64
02E1 E010 LDI R17,0
02E2 DDBE RCALL _delay_nms
02E3 98C2 CBI 0x18,2
02E4 98C3 CBI 0x18,3
02E5 9AC1 SBI 0x18,1
02E6 9AC0 SBI 0x18,0
02E7 E604 LDI R16,0x64
02E8 E010 LDI R17,0
02E9 DDB7 RCALL _delay_nms
02EA 98C3 CBI 0x18,3
02EB 9AC2 SBI 0x18,2
02EC 9AC1 SBI 0x18,1
02ED 9AC0 SBI 0x18,0
02EE E604 LDI R16,0x64
02EF E010 LDI R17,0
02F0 DDB0 RCALL _delay_nms
02F1 98C3 CBI 0x18,3
02F2 98C2 CBI 0x18,2
02F3 9AC1 SBI 0x18,1
02F4 9AC0 SBI 0x18,0
02F5 E604 LDI R16,0x64
02F6 E010 LDI R17,0
02F7 DDA9 RCALL _delay_nms
02F8 5041 SUBI R20,1
02F9 4050 SBCI R21,0
02FA 3040 CPI R20,0
02FB 0745 CPC R20,R21
02FC F009 BEQ 0x02FE
02FD CF8A RJMP 0x0288
02FE 940E046D CALL pop_gset1
0300 9508 RET
_USART_InitM1681:
tmp --> R10
baud --> R10
0301 940E0466 CALL push_gset3
0303 0158 MOVW R10,R16
(0365) }
(0366)
(0367)
(0368) /******************************************************************************
(0369) 功能:设置波特以及串口中断相关函数
(0370) 函数:void USART_InitM1681( unsigned int baud )
(0371) void USART_InitM1682( unsigned int baud )
(0372) #pragma interrupt_handler uart0_rx_isr_m16:12
(0373) #pragma interrupt_handler uart0_tx_isr_m16:14
(0374) 返回值:无
(0375) 备注:Fosc 晶振 如:4000000 4MHz
(0376) baud 传输速度 19200
(0377) 1681意思是8位 1停止位
(0378) 1682意思是8位 2停止位
(0379) #define F_CPU 3686400
(0380) #define F_CPU 4000000
(0381) //其他根据需要填写必须要定义的
(0382) ******************************************************************************/
(0383) #define F_CPU 3686400
(0384) void USART_InitM1681( unsigned int baud )
(0385) {
(0386) unsigned int tmp;
(0387) //设置波特率
(0388) tmp= F_CPU/baud/16-1;
0304 0115 MOVW R2,R10
0305 2444 CLR R4
0306 2455 CLR R5
0307 E040 LDI R20,0
0308 E450 LDI R21,0x40
0309 E368 LDI R22,0x38
030A E070 LDI R23,0
030B 925A ST R5,-Y
030C 924A ST R4,-Y
030D 923A ST R3,-Y
030E 922A ST R2,-Y
030F 018A MOVW R16,R20
0310 019B MOVW R18,R22
0311 940E03F1 CALL div32s
0313 E140 LDI R20,0x10
0314 E050 LDI R21,0
0315 E060 LDI R22,0
0316 E070 LDI R23,0
0317 937A ST R23,-Y
0318 936A ST R22,-Y
0319 935A ST R21,-Y
031A 934A ST R20,-Y
031B 940E03F1 CALL div32s
031D 0118 MOVW R2,R16
031E 0129 MOVW R4,R18
031F E041 LDI R20,1
0320 E050 LDI R21,0
0321 E060 LDI R22,0
0322 E070 LDI R23,0
0323 1A24 SUB R2,R20
0324 0A35 SBC R3,R21
0325 0A46 SBC R4,R22
0326 0A57 SBC R5,R23
0327 0151 MOVW R10,R2
(0389) //tmp= F_CPU3864/baud/16-1;
(0390) UBRRH = (unsigned char)(tmp>>8);
0328 2C23 MOV R2,R3
0329 2433 CLR R3
032A BC20 OUT 0x20,R2
(0391) UBRRL = (unsigned char)tmp;
032B B8A9 OUT 0x09,R10
(0392) //接收器与发送器使能//
(0393) // UCSRB = (1<<RXEN)|(1<<TXEN);
(0394) //接收器与发送器使能及接收中断使能
(0395) UCSRB = (1<<RXCIE)|(1<<RXEN)|(1<<TXEN);
032C E988 LDI R24,0x98
032D B98A OUT 0x0A,R24
(0396) //接收器与发送器使能及收发中断使能
(0397) // UCSRB = (1<<RXCIE)|(1<<TXCIE)|(1<<RXEN)|(1<<TXEN);
(0398) // 设置帧格式: 8 个数据位, 1 个停止位//
(0399) UCSRC = (1<<URSEL)|(3<<UCSZ0);
032E E886 LDI R24,0x86
032F BD80 OUT 0x20,R24
0330 940E045F CALL pop_gset3
0332 9508 RET
_USART_InitM1682:
tmp --> R10
baud --> R10
0333 940E0466 CALL push_gset3
0335 0158 MOVW R10,R16
(0400) }
(0401)
(0402) void USART_InitM1682( unsigned int baud )
(0403) {
(0404) unsigned int tmp;
(0405) // 设置波特率//
(0406) tmp= F_CPU/baud/16-1;
0336 0115 MOVW R2,R10
0337 2444 CLR R4
0338 2455 CLR R5
0339 E040 LDI R20,0
033A E450 LDI R21,0x40
033B E368 LDI R22,0x38
033C E070 LDI R23,0
033D 925A ST R5,-Y
033E 924A ST R4,-Y
033F 923A ST R3,-Y
0340 922A ST R2,-Y
0341 018A MOVW R16,R20
0342 019B MOVW R18,R22
0343 940E03F1 CALL div32s
0345 E140 LDI R20,0x10
0346 E050 LDI R21,0
0347 E060 LDI R22,0
0348 E070 LDI R23,0
0349 937A ST R23,-Y
034A 936A ST R22,-Y
034B 935A ST R21,-Y
034C 934A ST R20,-Y
034D 940E03F1 CALL div32s
034F 0118 MOVW R2,R16
0350 0129 MOVW R4,R18
0351 E041 LDI R20,1
0352 E050 LDI R21,0
0353 E060 LDI R22,0
0354 E070 LDI R23,0
0355 1A24 SUB R2,R20
0356 0A35 SBC R3,R21
0357 0A46 SBC R4,R22
0358 0A57 SBC R5,R23
0359 0151 MOVW R10,R2
(0407) UBRRH = (unsigned char)(tmp>>8);
035A 2C23 MOV R2,R3
035B 2433 CLR R3
035C BC20 OUT 0x20,R2
(0408) UBRRL = (unsigned char)tmp;
035D B8A9 OUT 0x09,R10
(0409) //接收器与发送器使能//
(0410) // UCSRB = (1<<RXEN)|(1<<TXEN);
(0411) //接收器与发送器使能及接收中断使能
(0412) UCSRB = (1<<RXCIE)|(1<<RXEN)|(1<<TXEN);
035E E988 LDI R24,0x98
035F B98A OUT 0x0A,R24
(0413) //接收器与发送器使能及收发中断使能
(0414) // UCSRB = (1<<RXCIE)|(1<<TXCIE)|(1<<RXEN)|(1<<TXEN);
(0415) //设置帧格式: 8 个数据位, 2 个停止位//
(0416) UCSRC = (1<<URSEL)|(1<<USBS)|(1<<UCSZ0)|(1<<UCSZ1);
0360 E88E LDI R24,0x8E
0361 BD80 OUT 0x20,R24
0362 940E045F CALL pop_gset3
0364 9508 RET
(0417) }
(0418)
(0419) /*以下为接收及发送相关中断函数,使用时调用即可
(0420) //中断向量号很重要不能搞错
(0421)
(0422)
(0423) uint tmp;
(0424) #pragma interrupt_handler uart0_rx_isr_m16:12
(0425) void uart0_rx_isr_m16(void)
(0426) {
(0427) tmp=USART_Receive8();
(0428) USART_Transmit8(tmp);
(0429) //有数据接收时的提示红灯闪动
(0430) if(tmp=='a')
(0431) {
(0432) USART_Transmit8('O');
(0433) USART_Transmit8('K');
(0434) USART_Transmit_2();
(0435) }
(0436) Green_LedOFF;
(0437) for(tmp=0;tmp<3;tmp++){
(0438) Red_LedOFF;
(0439) delay_nms(300);
(0440) Red_LedON;
(0441) delay_nms(300);}
(0442) }
(0443)
(0444) #pragma interrupt_handler uart0_tx_isr_m16:14
(0445) void uart0_tx_isr_m16(void)
(0446) { //有数据发出时的提示绿灯闪动
(0447) Red_LedOFF;
(0448) for(tmp=0;tmp<3;tmp++){
(0449) Green_LedON;
(0450) delay_nms(300);
(0451) Green_LedOFF;
(0452) delay_nms(300);}
(0453) // USART_Transmit8('O');///如果再次发送数据则会进入死循环。不建议
(0454) //USART_Transmit8('K');
(0455) //USART_Transmit8('?');
(0456) }
(0457)
(0458)
(0459) */
(0460) /******************************************************************************
(0461) 功能:外中断定义
(0462) 函数:#pragma interrupt_handler INT0_isr_m16:2
(0463) #pragma interrupt_handler INT1_isr_m16:3
(0464) 返回值:无
(0465) 备注:
(0466) 包括初始化程序:void INT0_init(void)//外中断0使能
(0467) void INT1_init(void)//外中断1使能
(0468) void INT01_init(void)//外中断0和1使能
(0469)
(0470) 特别要注意的是:PORTD = 0xff;如果低电平触发则初始化时要高电平。
(0471)
(0472) ******************************************************************************/
(0473) void INT0_init(void)//外中断0使能
(0474) {
(0475) CLI();
_INT0_init:
0365 94F8 BCLR 7
(0476) MCUCR = 0x00;//外中断01低电平触发
0366 2422 CLR R2
0367 BE25 OUT 0x35,R2
(0477) GIFR=(1<<INTF1)|(1<<INTF0);//GIFR=0x00;通用中断标志寄存器
0368 EC80 LDI R24,0xC0
0369 BF8A OUT 0x3A,R24
(0478) GICR=(1<<INT0);
036A E480 LDI R24,0x40
036B BF8B OUT 0x3B,R24
(0479) SEI();
036C 9478 BSET 7
036D 9508 RET
(0480) }
(0481) void INT1_init(void)//外中断1使能
(0482) {
(0483) CLI();
_INT1_init:
036E 94F8 BCLR 7
(0484) MCUCR = 0x00;//外中断01低电平触发
036F 2422 CLR R2
0370 BE25 OUT 0x35,R2
(0485) GIFR=(1<<INTF1)|(1<<INTF0);//GIFR=0x00;通用中断标志寄存器
0371 EC80 LDI R24,0xC0
0372 BF8A OUT 0x3A,R24
(0486) GICR=(1<<INT1);
0373 E880 LDI R24,0x80
0374 BF8B OUT 0x3B,R24
(0487) SEI();
0375 9478 BSET 7
0376 9508 RET
(0488) }
(0489) void INT01_init(void)//外中断0和1使能
(0490) {
(0491) CLI();
_INT01_init:
0377 94F8 BCLR 7
(0492) MCUCR = 0x00;//外中断01低电平触发
0378 2422 CLR R2
0379 BE25 OUT 0x35,R2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -