📄 test_c.lis
字号:
.module test_c.c
.area text(rom, con, rel)
.even
0000 _main::
0000 ; #include <iom8v.h> //和单片机类型相对应的头文件,选择Atmega8做实验;
0000 ; #include <macros.h>
0000 ; void delay_1ms(void); //函数声明,本实验中会用到这两个函数
0000 ; void delay_nms(unsigned int n);
0000 ; void main(void) //主函数
0000 ; {
0000 ; OSCCAL=0X9d;//系统时钟校准,不同的芯片和不同的频率,
0000 8DE9 ldi R24,157
0002 81BF out 0x31,R24
0004 ; DDRB=0B00000011; //定义B口的PB0、PB1为输出口
0004 83E0 ldi R24,3
0006 87BB out 0x17,R24
0008 ; PORTB=0B00000001; //PB0口输出高电平,PB1口输出低电平,绿灯亮
0008 81E0 ldi R24,1
000A 88BB out 0x18,R24
000C ; delay_nms(5000); //延时5秒
000C 08E8 ldi R16,5000
000E 13E1 ldi R17,19
0010 19D0 xcall _delay_nms
0012 ; PORTB=0B00000010; //PB1口输出高电平,PB0口输出低电平,关闭绿灯,红灯亮
0012 82E0 ldi R24,2
0014 88BB out 0x18,R24
0016 ; delay_nms(5000); //延时5秒
0016 08E8 ldi R16,5000
0018 13E1 ldi R17,19
001A 14D0 xcall _delay_nms
001C 07C0 xjmp L3
001E L2:
001E 83E0 ldi R24,3
0020 28B2 in R2,0x18
0022 2826 eor R2,R24
0024 28BA out 0x18,R2
0026 08EE ldi R16,1000
0028 13E0 ldi R17,3
002A 0CD0 xcall _delay_nms
002C L3:
002C ; while(1) //程序一直执行该循环
002C F8CF xjmp L2
002E X0:
002E ; {
002E ; PORTB^=0B00000011; //翻转PB0和PB1口
002E ; delay_nms(1000);
002E ; }
002E ; }
002E L1:
002E .dbline 0 ; func end
002E 0895 ret
0030 ; i -> R16,R17
.even
0030 _delay_1ms::
0030 ; void delay_1ms(void)//1ms延时函数
0030 ; {
0030 ; unsigned int i;
0030 ; for (i=0;i<150;i++)
0030 0027 clr R16
0032 1127 clr R17
0034 02C0 xjmp L9
0036 L6:
0036 L7:
0036 0F5F subi R16,255 ; offset = 1
0038 1F4F sbci R17,255
003A L9:
003A 0639 cpi R16,150
003C E0E0 ldi R30,0
003E 1E07 cpc R17,R30
0040 D0F3 brlo L6
0042 ; {
0042 ; }
0042 ; }
0042 L5:
0042 .dbline 0 ; func end
0042 0895 ret
0044 ; i -> R20,R21
0044 ; n -> R22,R23
.even
0044 _delay_nms::
0044 0E940000 xcall push_gset2
0048 B801 movw R22,R16
004A ; void delay_nms(unsigned int n)//延时n毫秒
004A ; {
004A ; unsigned int i;
004A ; for (i=0;i<n;i++)//执行n次1毫秒延时
004A 4427 clr R20
004C 5527 clr R21
004E 03C0 xjmp L14
0050 L11:
0050 EFDF xcall _delay_1ms
0052 L12:
0052 4F5F subi R20,255 ; offset = 1
0054 5F4F sbci R21,255
0056 L14:
0056 4617 cp R20,R22
0058 5707 cpc R21,R23
005A D0F3 brlo L11
005C ; delay_1ms();
005C ; }
005C L10:
005C 0E940000 xcall pop_gset2
0060 .dbline 0 ; func end
0060 0895 ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -