📄 avrstudy.lis
字号:
.module AVRSTUDY.C
.area data(ram, con, rel)
0000 _AC_TABLE::
0000 .blkb 2
.area idata
0000 8081 .byte 128,129
.area data(ram, con, rel)
0002 .blkb 2
.area idata
0002 8283 .byte 130,131
.area data(ram, con, rel)
0004 .blkb 2
.area idata
0004 8485 .byte 132,133
.area data(ram, con, rel)
0006 .blkb 2
.area idata
0006 8687 .byte 134,135
.area data(ram, con, rel)
0008 .blkb 2
.area idata
0008 9091 .byte 144,145
.area data(ram, con, rel)
000A .blkb 2
.area idata
000A 9293 .byte 146,147
.area data(ram, con, rel)
000C .blkb 2
.area idata
000C 9495 .byte 148,149
.area data(ram, con, rel)
000E .blkb 2
.area idata
000E 9697 .byte 150,151
.area data(ram, con, rel)
0010 .blkb 2
.area idata
0010 8889 .byte 136,137
.area data(ram, con, rel)
0012 .blkb 2
.area idata
0012 8A8B .byte 138,139
.area data(ram, con, rel)
0014 .blkb 2
.area idata
0014 8C8D .byte 140,141
.area data(ram, con, rel)
0016 .blkb 2
.area idata
0016 8E8F .byte 142,143
.area data(ram, con, rel)
0018 .blkb 2
.area idata
0018 9899 .byte 152,153
.area data(ram, con, rel)
001A .blkb 2
.area idata
001A 9A9B .byte 154,155
.area data(ram, con, rel)
001C .blkb 2
.area idata
001C 9C9D .byte 156,157
.area data(ram, con, rel)
001E .blkb 2
.area idata
001E 9E9F .byte 158,159
.area data(ram, con, rel)
0020 .dbfile E:\AVR学习专区\AVR学习板/st7920iccavrmega8.c
0020 .dbsym e AC_TABLE _AC_TABLE A[32:32]c
.area text(rom, con, rel)
0000 .dbfile E:\AVR学习专区\AVR学习板/st7920iccavrmega8.c
0000 .dbfunc e SendByte _SendByte fV
0000 ; i -> R20
0000 ; Dbyte -> R16
.even
0000 _SendByte::
0000 00D0 rcall push_gset1
0002 .dbline -1
0002 .dbline 34
0002 ; #include <iom8v.h>
0002 ; #include <macros.h>
0002 ; #include <stdio.h>
0002 ; #include "st7920iccavrmega8.c"
0002 ; #include "ds1302.c"
0002 ; #include "delay.h"
0002 ; #include "mega8_spi.c"
0002 ; #include "24cxx12864.c"
0002 ; #include "ad.c"
0002 ; #include "stepmotor.c"
0002 ; #include "串口测试.c"
0002 ;
0002 ; #pragma interrupt_handler Int0:2 //外部中断0中断函数声明
0002 ; #pragma interrupt_handler Int1:3 //外部中断1中断函数声明
0002 ; unsigned char str1[]="AVR 单片机开发板";
0002 ; unsigned char str2[]="设计制作:张国旗";
0002 ; unsigned char str3[]="→SPI 功能测试 2.I2C 功能测试 3.AD功能测试 4.步进电机测试 ";
0002 ; unsigned char str4[]="1.SPI 功能测试 →I2C 功能测试 3.AD功能测试 4.步进电机测试 ";
0002 ; unsigned char str5[]="1.SPI 功能测试 2.I2C 功能测试 →AD功能测试 4.步进电机测试 ";
0002 ; unsigned char str6[]="1.SPI 功能测试 2.I2C 功能测试 3.AD功能测试 →步进电机测试 ";
0002 ; unsigned char str7[]="2.I2C 功能测试 3.AD功能测试 4.步进电机测试 →串口通讯测试 ";
0002 ; unsigned char str8[]="3.AD功能测试 4.步进电机测试 5.串口通讯测试 →44键盘功能测试";
0002 ; unsigned char str9[]="4.步进电机测试 5.串口通讯测试 6.44键盘功能测试→返回 ";
0002 ; unsigned char str10[]="SPI 功能实验中…";
0002 ; unsigned char str11[]="步进电机实验中…";
0002 ; unsigned char str12[]=" 串口实验中… ";
0002 ; unsigned char str13[]=" 44键盘使用中…";
0002 ;
0002 ;
0002 ; uchar exit1=0,exit2=0,number1=1,enter1=0;
0002 ; //unsigned char bmp1[];//先声明一下就可以把表放在函数后面啦,呵呵
0002 ; //=========================
0002 ; // 毫秒延时函数8M晶振
0002 ; //=========================
0002 .dbline 36
0002 ; void delay(uint ms)
0002 ; {
0002 4427 clr R20
0004 09C0 rjmp L5
0006 L2:
0006 .dbline 37
0006 ; uint i,j;
0006 .dbline 38
0006 ; for(i=0;i<ms;i++)
0006 07FF sbrs R16,7
0008 02C0 rjmp L6
000A .dbline 38
000A C69A sbi 0x18,6
000C 01C0 rjmp L7
000E L6:
000E .dbline 39
000E ; {
000E C698 cbi 0x18,6
0010 L7:
0010 .dbline 40
0010 C79A sbi 0x18,7
0012 .dbline 41
0012 C798 cbi 0x18,7
0014 .dbline 42
0014 000F lsl R16
0016 .dbline 43
0016 L3:
0016 .dbline 36
0016 4395 inc R20
0018 L5:
0018 .dbline 36
0018 4830 cpi R20,8
001A A8F3 brlo L2
001C .dbline -2
001C L1:
001C 00D0 rcall pop_gset1
001E .dbline 0 ; func end
001E 0895 ret
0020 .dbsym r i 20 c
0020 .dbsym r Dbyte 16 c
0020 .dbend
0020 .dbfunc e ReceiveByte _ReceiveByte fc
0020 ; temp2 -> R16
0020 ; temp1 -> R18
0020 ; i -> R20
.even
0020 _ReceiveByte::
0020 00D0 rcall push_gset1
0022 .dbline -1
0022 .dbline 47
0022 ; for(j=0;j<1141;j++)
0022 ; {if(exit1==1){j=1141;i=ms;}}
0022 ; }
0022 ; }
0022 ;
0022 ; void Int0(void)
0022 ; {
0022 ; SREG&=0x7F;//打开全局中断
0022 .dbline 49
0022 ; delay(100);
0022 ; exit1=1;
0022 0027 clr R16
0024 2227 clr R18
0026 .dbline 50
0026 ; enter1=1;
0026 4427 clr R20
0028 0BC0 rjmp L12
002A L9:
002A .dbline 51
002A ; SREG|=0x80;//打开全局中断
002A .dbline 52
002A ;
002A BE98 cbi 0x17,6
002C .dbline 52
002C .dbline 53
002C ; }
002C 220F lsl R18
002E .dbline 54
002E ; void Int1(void)
002E B69B sbis 0x16,6
0030 01C0 rjmp L13
0032 .dbline 54
0032 2395 inc R18
0034 L13:
0034 .dbline 55
0034 87B3 in R24,0x17
0036 826C ori R24,194
0038 87BB out 0x17,R24
003A .dbline 55
003A .dbline 56
003A C79A sbi 0x18,7
003C .dbline 57
003C C798 cbi 0x18,7
003E .dbline 58
003E L10:
003E .dbline 50
003E 4395 inc R20
0040 L12:
0040 .dbline 50
0040 4830 cpi R20,8
0042 98F3 brlo L9
0044 .dbline 59
0044 ; {
0044 ; SREG&=0x7F;//打开全局中断
0044 ; delay(100);
0044 ;
0044 ; if(number1<7){number1++;}
0044 4427 clr R20
0046 0BC0 rjmp L18
0048 L15:
0048 .dbline 60
0048 ; else{number1=1;}
0048 .dbline 61
0048 ;
0048 BE98 cbi 0x17,6
004A .dbline 61
004A .dbline 62
004A ; SREG|=0x80;//打开全局中断
004A 000F lsl R16
004C .dbline 63
004C ;
004C B69B sbis 0x16,6
004E 01C0 rjmp L19
0050 .dbline 63
0050 0395 inc R16
0052 L19:
0052 .dbline 64
0052 87B3 in R24,0x17
0054 826C ori R24,194
0056 87BB out 0x17,R24
0058 .dbline 64
0058 .dbline 65
0058 C79A sbi 0x18,7
005A .dbline 66
005A C798 cbi 0x18,7
005C .dbline 67
005C L16:
005C .dbline 59
005C 4395 inc R20
005E L18:
005E .dbline 59
005E 4830 cpi R20,8
0060 98F3 brlo L15
0062 .dbline 68
0062 ; }
0062 ; void Init_int()
0062 ; {
0062 ;
0062 ; MCUCR =0x00; //设置INT0、INT1为下降沿触发中断
0062 802F mov R24,R16
0064 8F70 andi R24,15
0066 022F mov R16,R18
0068 007F andi R16,240
006A 080F add R16,R24
006C .dbline -2
006C L8:
006C 00D0 rcall pop_gset1
006E .dbline 0 ; func end
006E 0895 ret
0070 .dbsym r temp2 16 c
0070 .dbsym r temp1 18 c
0070 .dbsym r i 20 c
0070 .dbend
0070 .dbfunc e CheckBusy _CheckBusy fV
.even
0070 _CheckBusy::
0070 .dbline -1
0070 .dbline 72
0070 ; DDRD&=~BIT(PD2); //配置中断管脚为输入
0070 ; PORTD|=BIT(PD2); //使能中断管脚的上拉
0070 ; DDRD&=~BIT(PD2); //配置键盘数据输入口为输入
0070 ; DDRD&=~BIT(PD3); //配置键盘数据输入口为输入
0070 L22:
0070 .dbline 73
0070 ; PORTD|=BIT(PD2)|BIT(PD3); //使能数据输入管脚的上拉
0070 0CEF ldi R16,252
0072 C6DF rcall _SendByte
0074 L23:
0074 .dbline 74
0074 ; SREG|=0x80;//打开全局中断
0074 D5DF rcall _ReceiveByte
0076 07FD sbrc R16,7
0078 FBCF rjmp L22
007A .dbline -2
007A L21:
007A .dbline 0 ; func end
007A 0895 ret
007C .dbend
007C .dbfunc e WriteCommand _WriteCommand fV
007C ; Cbyte -> R20
.even
007C _WriteCommand::
007C 00D0 rcall push_gset1
007E 402F mov R20,R16
0080 .dbline -1
0080 .dbline 78
0080 ; GICR|=BIT(INT0)|BIT(INT1);//中断使能
0080 ;
0080 ; }
0080 ; void main( void )
0080 .dbline 79
0080 ; {
0080 F7DF rcall _CheckBusy
0082 .dbline 80
0082 ; uchar settime[7]={0x50,0x08,0x17,0x12,0x02,0x04,0x09};//设置的秒,分,时,日,月,星期,年
0082 08EF ldi R16,248
0084 BDDF rcall _SendByte
0086 .dbline 81
0086 ; uchar gettime[7]={0x01,0x01,0x01,0x01,0x01,0x01,0x01};//保存当前时间的数组
0086 042F mov R16,R20
0088 007F andi R16,240
008A BADF rcall _SendByte
008C .dbline 82
008C ; uint i,data=0;
008C 042F mov R16,R20
008E 0F70 andi R16,#0x0F
0090 0295 swap R16
0092 007F andi R16,240
0094 B5DF rcall _SendByte
0096 .dbline -2
0096 L25:
0096 00D0 rcall pop_gset1
0098 .dbline 0 ; func end
0098 0895 ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -