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

📄 main.lis

📁 用AVR atmega16做的一个完整彩色LED控制程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 010A           ; //DS1302_RST=0
 010A           ; #define       Clr_DS1302_RST() PORTD&=~(1<<DS1302_RST)
 010A           ; //DS1302_SDA=1
 010A           ; #define       Set_DS1302_SDA() PORTD|=1<<DS1302_SDA
 010A           ; //DS1302_SDA=0
 010A           ; #define       Clr_DS1302_SDA() PORTD&=~(1<<DS1302_SDA)
 010A           ; //DS1302_SCLK=1
 010A           ; #define       Set_DS1302_SCLK() PORTD|=1<<DS1302_SCLK
 010A           ; //DS1302_SCLK=0
 010A           ; #define       Clr_DS1302_SCLK() PORTD&=~(1<<DS1302_SCLK)
 010A           ; //DS1302的SDA置为输出脚
 010A           ; #define       Set_DS1302_DDRSDA() DDRD|=1<<DS1302_SDA
 010A           ; //DS1302的SDA置为输入脚
 010A           ; #define       Clr_DS1302_DDRSDA() DDRD&=~(1<<DS1302_SDA)
 010A           ; #define       DS1302_SEC_Reg 0x80
 010A           ; #define       DS1302_MIN_Reg 0x82
 010A           ; #define       DS1302_HR_Reg 0x84
 010A           ; #define       DS1302_DATE_Reg 0x86
 010A           ; #define       DS1302_MONTH_Reg 0x88
 010A           ; #define       DS1302_DAY_Reg 0x8a
 010A           ; #define       DS1302_YEAR_Reg 0x8c
 010A           ; #define       DS1302_CONTROL_Reg 0x8e
 010A           ; #define       DS1302_CHARGER_Reg 0x90
 010A           ; #define       DS1302_CLKBURST_Reg 0xbe
 010A           ; //全局变量
 010A           ; //为了方便,我把个位和十位分开了
 010A           ; uchar         year1=0x88;
 010A           ; uchar         year0=0x88;
 010A           ; uchar         month1=0x88;
 010A           ; uchar         month0=0x88;
 010A           ; uchar         date0=0x88;
 010A           ; uchar         date1=0x88;
 010A           ; uchar         day=0x88;
 010A           ; uchar         hour1=0x88;
 010A           ; uchar         hour0=0x88;
 010A           ; uchar         minute1=0x88;
 010A           ; uchar         minute0=0x88;
 010A           ; uchar         second1=0x88;
 010A           ; uchar         second0=0x88;
 010A           ; void  DS1302_Init(void);
 010A           ; uchar         Check_DS1302(void);
 010A           ; uchar         DS1302_Read(uchar reg);
 010A           ; void  DS1302_Write(uchar reg,uchar data);
 010A           ; void  ReadTime(void);
 010A           ; //////////////////////////////////////////////
 010A           ; 
 010A           ; void port_init(void)
 010A           ; {
 010A                   .dbline 571
 010A           ;        PORTA = 0x00;
 010A 2224              clr R2
 010C 2BBA              out 0x1b,R2
 010E                   .dbline 572
 010E           ;        DDRA  = 0xff;//PORTA0-PORTA7 ==> OUTPUT CHAR DATA
 010E 8FEF              ldi R24,255
 0110 8ABB              out 0x1a,R24
 0112                   .dbline 573
 0112           ;        PORTB = 0x00;
 0112 28BA              out 0x18,R2
 0114                   .dbline 574
 0114           ;        DDRB  = 0x00;
 0114 27BA              out 0x17,R2
 0116                   .dbline 575
 0116           ;        PORTC = 0xc3;//PORTC7,PORTC6,PORTC1,PORTC0 ==> key input ,enable_up 
 0116 83EC              ldi R24,195
 0118 85BB              out 0x15,R24
 011A                   .dbline 576
 011A           ;        DDRC  = 0x00;//PC7,PC6,PC1,PC0 ==> PRESS KEY INPUT ; PC2PC3PC4PC5 ==>JTAG USE
 011A 24BA              out 0x14,R2
 011C                   .dbline 577
 011C           ;        PORTD = 0xf8;//PORTD3-PORTD7 ==> LED CS ,enable_up ; 
 011C 88EF              ldi R24,248
 011E 82BB              out 0x12,R24
 0120                   .dbline 578
 0120           ;        DDRD  = 0xff;//PD3,PD4,PD5,PD6,PD7 ==>LED CS USE ;PD2,PD1,PD0 OUTPUT DS1302 USE
 0120 8FEF              ldi R24,255
 0122 81BB              out 0x11,R24
 0124                   .dbline -2
 0124           L45:
 0124                   .dbline 0 ; func end
 0124 0895              ret
 0126                   .dbend
 0126                   .dbfunc e init_devices _init_devices fV
                        .even
 0126           _init_devices::
 0126                   .dbline -1
 0126                   .dbline 583
 0126           ; }
 0126           ; 
 0126           ; //call this routine to initialize all peripherals
 0126           ; void init_devices(void)
 0126           ; {
 0126                   .dbline 586
 0126           ; //stop errant interrupts until set up
 0126           ; //   CLI(); //disable all interrupts
 0126           ;       port_init();
 0126 F1DF              xcall _port_init
 0128                   .dbline 587
 0128           ;       spi_init(); //初始化SPI接口
 0128 F8D6              xcall _spi_init
 012A                   .dbline 589
 012A           ; 
 012A           ;       MCUCR  = 0x00;
 012A 2224              clr R2
 012C 25BE              out 0x35,R2
 012E                   .dbline 590
 012E           ;       GICR     = 0x00;
 012E 2BBE              out 0x3b,R2
 0130                   .dbline 591
 0130           ;       TIMSK    = 0x00; //timer interrupt sources
 0130 29BE              out 0x39,R2
 0132                   .dbline -2
 0132           L46:
 0132                   .dbline 0 ; func end
 0132 0895              ret
 0134                   .dbend
 0134                   .dbfunc e PasswordProcess _PasswordProcess fV
 0134           ;            val -> R20,R21
                        .even
 0134           _PasswordProcess::
 0134 0E940000          xcall push_gset1
 0138                   .dbline -1
 0138                   .dbline 597
 0138           ; //   SEI(); //re-enable interrupts
 0138           ; //all peripherals are now initialized
 0138           ; }
 0138           ; 
 0138           ; void          PasswordProcess(void)
 0138           ; {
 0138                   .dbline 599
 0138           ;       int             val;
 0138           ;               EepromDayDataRd();
 0138 0E941F18          xcall _EepromDayDataRd
 013C                   .dbline 600
 013C           ;               if(DayData[0]==0)
 013C 20903F00          lds R2,_DayData
 0140 2220              tst R2
 0142 21F4              brne L48
 0144                   .dbline 601
 0144           ;               {
 0144                   .dbline 602
 0144           ;                       Password_alarm=TRUE;
 0144 81E0              ldi R24,1
 0146 8093CB00          sts _Password_alarm,R24
 014A                   .dbline 603
 014A           ;               }
 014A 45C0              xjmp L49
 014C           L48:
 014C                   .dbline 605
 014C           ;               else
 014C           ;               {
 014C                   .dbline 606
 014C           ;                       ReadTime();
 014C 0E940319          xcall _ReadTime
 0150                   .dbline 607
 0150           ;                       EepromDateValueRd();
 0150 0E943918          xcall _EepromDateValueRd
 0154                   .dbline 609
 0154           ; //                    if((year0==0 && year1==0 &&month1==0 &&month0==1 &&date1==0&&date0==1)||(year0==0xf && year1==0xf &&month1==0x1 &&month0==0xf &&date1==0x3&&date0==0xf))
 0154           ;                       if((year1==0 && month1==0 && date1==0)||(year1==0xa5 && month1==0x1f && date1==0x3f)) //070616 modify
 0154 20900000          lds R2,_year1
 0158 2220              tst R2
 015A 41F4              brne L54
 015C 20900200          lds R2,_month1
 0160 2220              tst R2
 0162 21F4              brne L54
 0164 20900500          lds R2,_date1
 0168 2220              tst R2
 016A 61F0              breq L52
 016C           L54:
 016C 80910000          lds R24,_year1
 0170 853A              cpi R24,165
 0172 61F4              brne L50
 0174 80910200          lds R24,_month1
 0178 8F31              cpi R24,31
 017A 41F4              brne L50
 017C 80910500          lds R24,_date1
 0180 8F33              cpi R24,63
 0182 21F4              brne L50
 0184           L52:
 0184                   .dbline 610
 0184           ;                       {
 0184                   .dbline 611
 0184           ;                               Password_alarm=TRUE;
 0184 81E0              ldi R24,1
 0186 8093CB00          sts _Password_alarm,R24
 018A                   .dbline 612
 018A           ;                       }
 018A 25C0              xjmp L51
 018C           L50:
 018C                   .dbline 614
 018C           ;                       else
 018C           ;                       {
 018C                   .dbline 615
 018C           ;                               val=CompareDate();
 018C 0E94AA19          xcall _CompareDate
 0190 A801              movw R20,R16
 0192                   .dbline 616
 0192 0F3F              cpi R16,255
 0194 EFEF              ldi R30,255
 0196 1E07              cpc R17,R30
 0198 31F0              breq L57
 019A 20903F00          lds R2,_DayData
 019E 3324              clr R3
 01A0 2016              cp R2,R16
 01A2 3106              cpc R3,R17
 01A4 24F4              brge L55
 01A6           L57:
 01A6                   .dbline 616
 01A6           ;                               if((val==-1) ||( val > DayData[0]))     Password_alarm=TRUE;
 01A6 81E0              ldi R24,1
 01A8 8093CB00          sts _Password_alarm,R24
 01AC 14C0              xjmp L56
 01AE           L55:
 01AE                   .dbline 618
 01AE           ;                               else
 01AE           ;                               {
 01AE                   .dbline 619
 01AE           ;                                       if(val!=Oneday)
 01AE 20903E00          lds R2,_Oneday
 01B2 3324              clr R3
 01B4 4215              cp R20,R2
 01B6 5305              cpc R21,R3
 01B8 59F0              breq L58
 01BA                   .dbline 620
 01BA           ;                                       {
 01BA                   .dbline 621
 01BA           ;                                               Oneday=val;
 01BA 40933E00          sts _Oneday,R20
 01BE                   .dbline 622
 01BE           ;                                               DayData[0]=DayData[0]-val;
 01BE 20903F00          lds R2,_DayData
 01C2 3324              clr R3
 01C4 241A              sub R2,R20
 01C6 350A              sbc R3,R21
 01C8 20923F00          sts _DayData,R2
 01CC                   .dbline 623
 01CC           ;                                               EepromDayDataWr();
 01CC 0E942C18          xcall _EepromDayDataWr
 01D0                   .dbline 624
 01D0           ;                                       }
 01D0           L58:
 01D0                   .dbline 625
 01D0           ;                                       Password_alarm=FALSE;
 01D0 2224              clr R2
 01D2 2092CB00          sts _Password_alarm,R2
 01D6                   .dbline 626
 01D6           ;                               }
 01D6           L56:
 01D6                   .dbline 627
 01D6           ;                       }
 01D6           L51:
 01D6                   .dbline 628
 01D6           L49:
 01D6                   .dbline -2
 01D6           L47:
 01D6 0E940000          xcall pop_gset1
 01DA                   .dbline 0 ; func end
 01DA 0895              ret
 01DC                   .dbsym r val 20 I
 01DC                   .dbend
 01DC                   .dbfunc e main _main fV
 01DC           ;             KK -> y+13
 01DC           ;         tempPW -> y+0
 01DC           ;           kind -> y+12
 01DC           ;         pwloop -> y+10
 01DC           ;              i -> y+9
 01DC           ;            bit -> y+8
 01DC           ;           loop -> y+6
                        .even
 01DC           _main::
 01DC 6197              sbiw R28,17
 01DE                   .dbline -1
 01DE                   .dbline 632
 01DE           ;               }
 01DE           ; }
 01DE           ; 
 01DE           ; void   main(void)
 01DE           ; {
 01DE                   .dbline 633
 01DE           ;          char          bit,i=0,kind=0;
 01DE 0024              clr R0
 01E0 0986              std y+9,R0
 01E2                   .dbline 633
 01E2 0C86              std y+12,R0
 01E4                   .dbli

⌨️ 快捷键说明

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