📄 atmega16test.lst
字号:
__start:
__text_start:
0103 E5CF LDI R28,0x5F
0104 E0D4 LDI R29,4
0105 BFCD OUT 0x3D,R28
0106 BFDE OUT 0x3E,R29
0107 51C0 SUBI R28,0x10
0108 40D0 SBCI R29,0
0109 EA0A LDI R16,0xAA
010A 8308 STD Y+0,R16
010B 2400 CLR R0
010C E6ED LDI R30,0x6D
010D E0F0 LDI R31,0
010E E011 LDI R17,1
010F 34E0 CPI R30,0x40
0110 07F1 CPC R31,R17
0111 F011 BEQ 0x0114
0112 9201 ST R0,Z+
0113 CFFB RJMP 0x010F
0114 8300 STD Z+0,R16
0115 EFE8 LDI R30,0xF8
0116 E0F1 LDI R31,1
0117 E6A0 LDI R26,0x60
0118 E0B0 LDI R27,0
0119 E012 LDI R17,2
011A 30E5 CPI R30,5
011B 07F1 CPC R31,R17
011C F021 BEQ 0x0121
011D 95C8 LPM
011E 9631 ADIW R30,1
011F 920D ST R0,X+
0120 CFF9 RJMP 0x011A
0121 940E0212 CALL _main
_exit:
0123 CFFF RJMP _exit
_Delay:
j --> R20
i --> R22
tim --> R16
0124 940E1BE8 CALL push_gset2
FILE: D:\Ledcontrol\test\main.c
(0001) //ICC-AVR application builder : 2007-5-12 23:12:06
(0002) // Target : M16
(0003) // Crystal: 1.0000Mhz
(0004)
(0005) #include <iom16v.h>
(0006) #include <macros.h>
(0007) #include <eeprom.h>
(0008) //#include <math.h>
(0009)
(0010) #define uint unsigned int
(0011) #define uchar unsigned char
(0012)
(0013) #define TRUE 1
(0014) #define FALSE 0
(0015)
(0016) #define VERSION_CONTROL 1
(0017)
(0018) #define YEAR_SETUP 0x07
(0019) #define MONTH_SETUP 0x06
(0020) #define DAY_SETUP 0x10
(0021)
(0022) #define INIT_YEAR 0x07
(0023) #define INIT_MONTH 0x06
(0024) #define INIT_DATE 0x10
(0025) #define INIT_DAY 0x07
(0026) #define INIT_HOUR 0x19
(0027) #define INIT_MINUTE 0x07
(0028) #define INIT_SECOND 0x00
(0029) #if 1
(0030) #define KEY_FUNCTION 0x43 //pc7 ,K1
(0031) #define KEY_UP 0x83 //pc6 ,K2
(0032) #define KEY_DOWN 0xc2 //pc0 ,K3
(0033) #define KEY_K4 0xc1 //pc1 ,K4
(0034) #define KEY_K1K4RST 0x41 //k1k4
(0035) #define KEY_K3K4RST 0xc0 //k3k4
(0036) #else
(0037) #define KEY_UP 0xc2 //pc0 ,K2
(0038) #define KEY_DOWN 0xc1 //pc1 ,K3
(0039) #define KEY_FUNCTION 0x83 //pc6 ,K1
(0040) #define KEY_K4 0x43 //pc7 ,K4
(0041) #define KEY_K1K4RST 0x03 //k1k4
(0042) #define KEY_K3K4RST 0x41 //k3k4
(0043) #endif
(0044)
(0045) #define KEY_RESET 0xd
(0046) #define MAXVAL_LENGHT 9999
(0047) //#define MINVAL_LENGHT 8
(0048) #define MINVAL_LENGHT 4
(0049) #define MAXVAL_KIND 112
(0050) #define MINVAL_KIND 0
(0051)
(0052)
(0053) #define MODE_NOMALE 1
(0054) #define MODE_LENGHT 2
(0055) #define MODE_KIND 3
(0056) #define MODE_PASSWORD 4
(0057)
(0058)
(0059) //#define CLASSNUMBER 32
(0060) #define CLASSNUMBER 4
(0061)
(0062) //从前向后,正向。
(0063) #define DIR0 0x00
(0064)
(0065) //从后向前,反向。
(0066) #define DIR1 0x04
(0067)
(0068) //从中间向两边。
(0069) #define DIR2 0x08
(0070)
(0071) //从两边向中间。
(0072) #define DIR3 0x0c
(0073)
(0074) //整体
(0075) //#define DIR4 0x40
(0076)
(0077) //全彩
(0078) #define KIND0 0x00
(0079) //慧星拖尾
(0080) #define KIND1 0x10
(0081) //红-青-红
(0082) #define KIND2 0x20
(0083) //六色刷色
(0084) #define KIND3 0x30
(0085) //混合色
(0086) #define KIND4 0x40
(0087) //三路交叠
(0088) #define KIND5 0x50
(0089) //多彩
(0090) #define KIND6 0x60
(0091) #define KIND7 0x70
(0092)
(0093) #define ALLBLACK 0x95 //10010101
(0094) #define UNLOCKDATA 0x15 //00010101
(0095)
(0096) #define SPEED0 0x00
(0097) #define SPEED1 0x01
(0098) #define SPEED2 0x02
(0099) #define SPEED3 0x03
(0100)
(0101) #define PASSWORDLENGHT 6
(0102) #define PASS_DISABLE 0xff
(0103) #define PASSWORD_SETUP 0x11
(0104) #define DATE_SETUP 0x22
(0105) #define INVALE_SETUP 0x33
(0106) //#define PASSWORD_ENTER 0x44
(0107) #define MAXDATE 250
(0108) #define MAXNUMBER 99
(0109)
(0110) //typedef struct {
(0111) char ModeStatus;
(0112) char CurrentKey;
(0113) char BackKey;
(0114) char K1Count;
(0115) uchar K4Count;
(0116) char CurrentKind;
(0117) char val_kind;
(0118) uchar Password_alarm;
(0119) uchar Password_Enable;
(0120) uchar PassDate_flag; //0x11 : password setup ; 0x22 : date setup
(0121) uint val_lenght;
(0122) uint BLenghtCount;
(0123) uint FLenghtCount;
(0124) uint HalfLenght;
(0125) uint left;
(0126) uint right;
(0127) uint PwModify_flag;
(0128) //}WORKLED;
(0129)
(0130) //WORKLED WorkLed;
(0131)
(0132) unsigned char KindData[MAXVAL_KIND];
(0133) uchar PasswordData[PASSWORDLENGHT];
(0134) uchar DateValue[4];
(0135) uchar DayData[2];
(0136) uchar Oneday;
(0137)
(0138) //uchar tc1,tc2;
(0139) uchar color1,color2,SI_Count;
(0140)
(0141) /*
(0142) KindDataStr[MAXVAL_KIND][2]:
(0143)
(0144) mode data 8bit; dir data 4bit + speed data 4bit
(0145) 1 byte 2byte
(0146)
(0147) speed data:
(0148) 0 -->speed 1
(0149) 1 -->speed 2
(0150) 2 -->speed 3
(0151) 3 -->speed 4
(0152) dir data:
(0153) 0 --> 正向
(0154) 1 --> 反向
(0155) 2 -->中间向两边
(0156) 3 -->两边向中间
(0157)
(0158) */
(0159) #define RBASE 0x94 //D2D1
(0160) #define GBASE 0x85 //D6D5
(0161) #define BBASE 0x91 //D4D3
(0162) #define YBASE 0xbf&RBASE&GBASE
(0163) #define WBASE 0xbf&RBASE&GBASE&BBASE
(0164) #define RBBASE 0xbf&RBASE&BBASE
(0165) #define GBBASE 0xbf&GBASE&BBASE
(0166)
(0167) //亮00
(0168) #define SDATA0 0x00
(0169) //灭01
(0170) #define SDATA1 0x01
(0171) //渐暗10
(0172) #define SDATA2 0x02
(0173) //渐明11
(0174) #define SDATA3 0x03
(0175)
(0176) #define BDATA 0x80
(0177) #define GBIT 4
(0178) #define BBIT 2
(0179) #define RBIT 0
(0180)
(0181) //全彩
(0182) #define ALLCOLOR BDATA |(SDATA3<<GBIT)|(SDATA1<<BBIT)|(SDATA0<<RBIT) //0xb1
(0183)
(0184) #define SEVENCOLOR0 BDATA |(SDATA3<<GBIT)|(SDATA1<<BBIT)|(SDATA2<<RBIT)
(0185) #define SEVENCOLOR1 BDATA |(SDATA2<<GBIT)|(SDATA1<<BBIT)|(SDATA3<<RBIT)
(0186) #define SEVENCOLOR2 BDATA |(SDATA3<<GBIT)|(SDATA2<<BBIT)|(SDATA1<<RBIT)
(0187) #define SEVENCOLOR3 BDATA |(SDATA2<<GBIT)|(SDATA3<<BBIT)|(SDATA1<<RBIT)
(0188) #define SEVENCOLOR4 BDATA |(SDATA1<<GBIT)|(SDATA3<<BBIT)|(SDATA2<<RBIT)
(0189) #define SEVENCOLOR5 BDATA |(SDATA1<<GBIT)|(SDATA2<<BBIT)|(SDATA3<<RBIT)
(0190)
(0191) #define THREECOLORR BDATA |(SDATA1<<GBIT)|(SDATA1<<BBIT)|(SDATA2<<RBIT)
(0192) #define THREECOLORG BDATA |(SDATA2<<GBIT)|(SDATA1<<BBIT)|(SDATA1<<RBIT)
(0193) #define THREECOLORB BDATA |(SDATA1<<GBIT)|(SDATA2<<BBIT)|(SDATA1<<RBIT)
(0194)
(0195) #define THREECOLORR1 BDATA |(SDATA3<<GBIT)|(SDATA1<<BBIT)|(SDATA2<<RBIT)
(0196) #define THREECOLORG1 BDATA |(SDATA1<<GBIT)|(SDATA3<<BBIT)|(SDATA2<<RBIT)
(0197) #define THREECOLORB1 BDATA |(SDATA2<<GBIT)|(SDATA3<<BBIT)|(SDATA1<<RBIT)
(0198)
(0199) #define ALLCOLOR0 BDATA |(SDATA3<<GBIT)|(SDATA1<<BBIT)|(SDATA0<<RBIT)
(0200) #define ALLCOLOR4 BDATA |(SDATA1<<GBIT)|(SDATA0<<BBIT)|(SDATA3<<RBIT)
(0201) #define ALLCOLOR3 BDATA |(SDATA0<<GBIT)|(SDATA3<<BBIT)|(SDATA1<<RBIT)
(0202) #define ALLCOLOR2 BDATA |(SDATA3<<GBIT)|(SDATA0<<BBIT)|(SDATA1<<RBIT)
(0203) #define ALLCOLOR1 BDATA |(SDATA0<<GBIT)|(SDATA1<<BBIT)|(SDATA3<<RBIT)
(0204) #define ALLCOLOR5 BDATA |(SDATA1<<GBIT)|(SDATA3<<BBIT)|(SDATA0<<RBIT)
(0205) #if 1
(0206) #define ALLSTAR0 BDATA |(SDATA1<<GBIT)|(SDATA1<<BBIT)|(SDATA2<<RBIT) //red
(0207) #define ALLSTAR1 BDATA |(SDATA2<<GBIT)|(SDATA1<<BBIT)|(SDATA1<<RBIT) //green
(0208) #define ALLSTAR2 BDATA |(SDATA1<<GBIT)|(SDATA2<<BBIT)|(SDATA1<<RBIT) //blue
(0209) #define ALLSTAR3 BDATA |(SDATA1<<GBIT)|(SDATA2<<BBIT)|(SDATA2<<RBIT) //0xb1
(0210) #define ALLSTAR4 BDATA |(SDATA2<<GBIT)|(SDATA1<<BBIT)|(SDATA2<<RBIT) //0xb1
(0211) #define ALLSTAR5 BDATA |(SDATA2<<GBIT)|(SDATA2<<BBIT)|(SDATA1<<RBIT) //0xb1
(0212) #define ALLSTAR6 BDATA |(SDATA2<<GBIT)|(SDATA2<<BBIT)|(SDATA2<<RBIT) //0xb1
(0213)
(0214) #else
(0215) #define ALLSTAR0 BDATA |(SDATA1<<GBIT)|(SDATA1<<BBIT)|(SDATA0<<RBIT) //red
(0216) #define ALLSTAR1 BDATA |(SDATA0<<GBIT)|(SDATA1<<BBIT)|(SDATA1<<RBIT) //green
(0217) #define ALLSTAR2 BDATA |(SDATA1<<GBIT)|(SDATA0<<BBIT)|(SDATA1<<RBIT) //blue
(0218) #define ALLSTAR3 BDATA |(SDATA1<<GBIT)|(SDATA0<<BBIT)|(SDATA0<<RBIT) //0xb1
(0219) #define ALLSTAR4 BDATA |(SDATA0<<GBIT)|(SDATA1<<BBIT)|(SDATA0<<RBIT) //0xb1
(0220) #define ALLSTAR5 BDATA |(SDATA0<<GBIT)|(SDATA0<<BBIT)|(SDATA1<<RBIT) //0xb1
(0221) #endif
(0222) //#define UNITEC0 BDATA |(SDATA1<<GBIT)|(SDATA3<<BBIT)|(SDATA2<<RBIT) //red
(0223) //#define UNITEC1 BDATA |(SDATA3<<GBIT)|(SDATA1<<BBIT)|(SDATA2<<RBIT) //green
(0224) //#define UNITEC2 BDATA |(SDATA2<<GBIT)|(SDATA1<<BBIT)|(SDATA3<<RBIT) //blue
(0225) #define UNITEC0 BDATA |(SDATA1<<GBIT)|(SDATA1<<BBIT)|(SDATA0<<RBIT) //red
(0226) #define UNITEC1 BDATA |(SDATA0<<GBIT)|(SDATA1<<BBIT)|(SDATA1<<RBIT) //green
(0227) #define UNITEC2 BDATA |(SDATA1<<GBIT)|(SDATA0<<BBIT)|(SDATA1<<RBIT) //blue
(0228) #define UNITEC3 BDATA |(SDATA2<<GBIT)|(SDATA3<<BBIT)|(SDATA1<<RBIT) //0xb1
(0229) #define UNITEC4 BDATA |(SDATA1<<GBIT)|(SDATA2<<BBIT)|(SDATA3<<RBIT) //0xb1
(0230) #define UNITEC5 BDATA |(SDATA3<<GBIT)|(SDATA2<<BBIT)|(SDATA1<<RBIT) //0xb1
(0231)
(0232)
(0233) #define ALL_ID 0
(0234) #define STAR_ID 1
(0235) #define SIX_ID 2
(0236) #define SEVEN_ID 3
(0237) //整体三路交叠渐变
(0238) #define THREE_ID 4
(0239) //三路交叠飘动
(0240) #define THREE1_ID 5
(0241) //整体全彩渐变
(0242) #define ALLCOLOR_ID 6
(0243) //混合色交叠渐变
(0244) #define UNITEC_ID 7
(0245)
(0246)
(0247) const unsigned char KindGroudData[8][7]=
(0248) {
(0249) //全彩
(0250) {ALLCOLOR0,ALLCOLOR1,ALLCOLOR2,ALLCOLOR3,ALLCOLOR4,ALLCOLOR5,0x00},
(0251)
(0252) //慧星拖尾
(0253) {ALLSTAR0,ALLSTAR1,ALLSTAR2,ALLSTAR3,ALLSTAR4,ALLSTAR5,0x00},
(0254) // {ALLSTAR0,ALLSTAR1,ALLSTAR2,0x00,0x00,0x00,0x00},
(0255)
(0256) //六色刷色: 红 绿 兰 黄 紫 青
(0257) {RBASE,GBASE,BBASE,YBASE,RBBASE,GBBASE,0x00},
(0258)
(0259) //多彩: 红 绿 兰 黄 紫 青 白
(0260) {SEVENCOLOR0,SEVENCOLOR1,SEVENCOLOR2,SEVENCOLOR3,SEVENCOLOR4,SEVENCOLOR5,0x00},
(0261)
(0262) //整体三路交叠渐变: 红 绿 兰
(0263) {THREECOLORR,THREECOLORG,THREECOLORB,0x00,0x00,0x00,0x00},
(0264) //三路交叠飘动: 红 绿 兰
(0265) {THREECOLORR1,THREECOLORB1,THREECOLORG1,0x00,0x00,0x00,0x00},
(0266) //整体全彩渐变
(0267) {ALLCOLOR0,ALLCOLOR1,ALLCOLOR2,ALLCOLOR3,ALLCOLOR4,ALLCOLOR5,0x00},
(0268) //混合色交叠渐变
(0269) {UNITEC0,0x00,0x00,0x00,0x00,0x00,0x00},
(0270) // {UNITEC0,UNITEC1,UNITEC2,UNITEC3,UNITEC4,UNITEC5,0x00},
(0271) };
(0272)
(0273) const unsigned char KindDataValue[60][2]=
(0274) {
(0275) //0 -->52
(0276) {GBBASE ,RBASE},{GBBASE ,RBASE},{GBBASE ,RBASE},{GBBASE ,RBASE},
(0277) //-->56
(0278) {GBBASE ,RBASE},{GBBASE ,GBASE},{GBBASE ,GBASE},{GBBASE ,GBASE},
(0279) //8 -->60
(0280) {GBBASE,GBASE},{GBBASE,GBASE},{WBASE,YBASE},{WBASE,YBASE},
(0281) //12-->64
(0282) {WBASE,YBASE},{WBASE,YBASE},{WBASE,YBASE},{RBBASE,BBASE},
(0283) //16-->68
(0284) {RBBASE,BBASE},{RBBASE,BBASE},{RBBASE,BBASE},{RBBASE,BBASE},
(0285) //20-->72
(0286) {YBASE,GBASE},{YBASE,GBASE},{YBASE,GBASE},{YBASE,GBASE},
(0287) //24-->76
(0288) {YBASE,GBASE},{WBASE,GBBASE},{WBASE,GBBASE},{WBASE,GBBASE},
(0289) //28-->80 v
(0290) {WBASE,GBBASE},{WBASE,GBBASE},{GBBASE,BBASE},{GBBASE,BBASE},
(0291) //32-->84
(0292) {GBBASE,BBASE},{GBBASE,BBASE},{GBBASE,BBASE},{YBASE,RBASE},
(0293) //36-->88
(0294) {YBASE,RBASE},{YBASE,RBASE},{YBASE,RBASE},{YBASE,RBASE},
(0295) //40-->92
(0296) {WBASE,RBBASE},{WBASE,RBBASE},{WBASE,RBBASE},{WBASE,RBBASE},
(0297) //44-->96
(0298) {WBASE,RBBASE},{WBASE,GBASE},{WBASE,GBASE},{WBASE,GBASE},
(0299) //48-->100
(0300) {WBASE,GBASE},{WBASE,GBASE},{WBASE,RBASE},{WBASE,RBASE},
(0301) //52-->104
(0302) {WBASE,RBASE},{WBASE,RBASE},{WBASE,RBASE},{WBASE,BBASE},
(0303) //56-->108
(0304) {WBASE,BBASE},{WBASE,BBASE},{WBASE,BBASE},{WBASE,BBASE}
(0305) };
(0306)
(0307)
(0308) const unsigned char KindDataStr[MAXVAL_KIND][2]=
(0309) {
(0310) //0 v
(0311) {ALL_ID,KIND0|DIR0|SPEED0},{ALL_ID,KIND0|DIR0|SPEED1},{ALL_ID,KIND0|DIR0|SPEED2},{ALL_ID,KIND0|DIR0|SPEED3},
(0312) // 4 v
(0313) {ALL_ID,KIND0|DIR1|SPEED0},{ALL_ID,KIND0|DIR1|SPEED1},{ALL_ID,KIND0|DIR2|SPEED0},{ALL_ID,KIND0|DIR2|SPEED1},
(0314) //8 v
(0315) {ALL_ID,KIND0|DIR3|SPEED0},{ALL_ID,KIND0|DIR3|SPEED1},{STAR_ID,KIND1|DIR0|SPEED0},{STAR_ID,KIND1|DIR0|SPEED1},
(0316) //12
(0317) {STAR_ID,KIND1|DIR0|SPEED2},{STAR_ID,KIND1|DIR1|SPEED0},{STAR_ID,KIND1|DIR1|SPEED1},{STAR_ID,KIND1|DIR2|SPEED0},
(0318) //16
(0319) {STAR_ID,KIND1|DIR2|SPEED1},{STAR_ID,KIND1|DIR3|SPEED0},{STAR_ID,KIND1|DIR3|SPEED1},{ALLCOLOR_ID,KIND0|DIR0|SPEED0},
(0320) //20v
(0321) {SIX_ID,KIND3|DIR0|SPEED0},{SIX_ID,KIND3|DIR0|SPEED1},{SIX_ID,KIND3|DIR0|SPEED2},{SIX_ID,KIND3|DIR0|SPEED3},
(0322) //24v
(0323) {SIX_ID,KIND3|DIR1|SPEED0},{SIX_ID,KIND3|DIR1|SPEED1},{SIX_ID,KIND3|DIR2|SPEED0},{SIX_ID,KIND3|DIR2|SPEED1},
(0324) //28v
(0325) {SIX_ID,KIND3|DIR3|SPEED0},{SIX_ID,KIND3|DIR3|SPEED1},{THREE_ID,KIND0|DIR0|SPEED0},{UNITEC_ID,KIND0|DIR0|SPEED0},
(0326) //32
(0327) {UNITEC_ID,KIND0|DIR0|SPEED1},{UNITEC_ID,KIND0|DIR0|SPEED2},{UNITEC_ID,KIND0|DIR0|SPEED3},{UNITEC_ID,KIND0|DIR1|SPEED0},
(0328) //36
(0329) {UNITEC_ID,KIND0|DIR1|SPEED1},{UNITEC_ID,KIND0|DIR2|SPEED0},{UNITEC_ID,KIND0|DIR2|SPEED1},{UNITEC_ID,KIND0|DIR3|SPEED0},
(0330) //40
(0331) {UNITEC_ID,KIND0|DIR3|SPEED1},{THREE1_ID,KIND0|DIR0|SPEED0},{THREE1_ID,KIND0|DIR0|SPEED1},{THREE1_ID,KIND0|DIR0|SPEED2},
(0332) //44 v
(0333) {THREE1_ID,KIND0|DIR1|SPEED0},{THREE1_ID,KIND0|DIR1|SPEED1},{SEVEN_ID,KIND0|DIR0|SPEED0},{SEVEN_ID,KIND0|DIR0|SPEED1},
(0334) //48 v
(0335) {SEVEN_ID,KIND0|DIR0|SPEED2},{SEVEN_ID,KIND0|DIR0|SPEED3},{SEVEN_ID,KIND0|DIR1|SPEED0},{SEVEN_ID,KIND0|DIR1|SPEED1},
(0336) //52
(0337) {RBASE,KIND2|DIR0|SPEED0},{RBASE,KIND2|DIR0|SPEED1},{RBASE,KIND2|DIR0|SPEED2},{RBASE,KIND2|DIR1|SPEED0},
(0338) //56
(0339) {RBASE,KIND2|DIR1|SPEED1},{GBASE,KIND2|DIR0|SPEED0},{GBASE,KIND2|DIR0|SPEED1},{GBASE,KIND2|DIR0|SPEED2},
(0340) //60
(0341) {GBASE,KIND2|DIR1|SPEED0},{GBASE,KIND2|DIR1|SPEED1},{YBASE,KIND2|DIR0|SPEED0},{YBASE,KIND2|DIR0|SPEED1},
(0342) //64
(0343) {YBASE,KIND2|DIR0|SPEED2},{YBASE,KIND2|DIR1|SPEED0},{YBASE,KIND2|DIR1|SPEED1},{BBASE,KIND2|DIR0|SPEED0},
(0344) //68
(0345) {BBASE,KIND2|DIR0|SPEED1},{BBASE,KIND2|DIR0|SPEED2},{BBASE,KIND2|DIR1|SPEED0},{BBASE,KIND2|DIR1|SPEED1},
(0346) //72
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -