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

📄 1602.lst

📁 1602LCD_mega16.rar
💻 LST
📖 第 1 页 / 共 2 页
字号:
(0205) /************************************************************************/
(0206) 
(0207) unsigned char dispbuf[]={'0','1','2','3','4','5','6','7','8','9'};
(0208) unsigned char dispbitcnt=8;
(0209) 
(0210) unsigned char second;
(0211) unsigned char minite;
(0212) unsigned char hour;
(0213) unsigned int tcnt;
(0214) unsigned char mstcnt=8,i;
(0215) 
(0216) 
(0217) void port_init(void)
(0218) {
(0219)  PORTA = 0x00;
_port_init:
     112 2422      CLR	R2
     113 BA2B      OUT	0x1B,R2
(0220)  DDRA  = 0xFF;
     114 EF8F      LDI	R24,0xFF
     115 BB8A      OUT	0x1A,R24
(0221)  PORTB = 0x00;
     116 BA28      OUT	0x18,R2
(0222)  DDRB  = 0xFF;
     117 BB87      OUT	0x17,R24
(0223)  PORTC = 0x00; //m103 output only
     118 BA25      OUT	0x15,R2
(0224)  DDRC  = 0xFF;
     119 BB84      OUT	0x14,R24
(0225)  PORTD = 0x00;
     11A BA22      OUT	0x12,R2
(0226)  DDRD  = 0xFF;
     11B BB81      OUT	0x11,R24
     11C 9508      RET
(0227) }
(0228) //TIMER0 initialize - prescale:64
(0229) // WGM: Normal
(0230) // desired value: 1mSec
(0231) // actual value:  1.000mSec (0.0%)
(0232) void timer0_init(void)
(0233) {
(0234)  TCCR0 = 0x00; //stop
_timer0_init:
     11D 2422      CLR	R2
     11E BE23      OUT	0x33,R2
(0235)  TCNT0 = 0x83; //set count
     11F E883      LDI	R24,0x83
     120 BF82      OUT	0x32,R24
(0236)  OCR0  = 0x7D;  //set compare
     121 E78D      LDI	R24,0x7D
     122 BF8C      OUT	0x3C,R24
(0237)  TCCR0 = 0x03; //start timer
     123 E083      LDI	R24,3
     124 BF83      OUT	0x33,R24
     125 9508      RET
_timer0_ovf_isr:
     126 920A      ST	R0,-Y
     127 921A      ST	R1,-Y
     128 922A      ST	R2,-Y
     129 923A      ST	R3,-Y
     12A 924A      ST	R4,-Y
     12B 925A      ST	R5,-Y
     12C 926A      ST	R6,-Y
     12D 927A      ST	R7,-Y
     12E 928A      ST	R8,-Y
     12F 929A      ST	R9,-Y
     130 930A      ST	R16,-Y
     131 931A      ST	R17,-Y
     132 932A      ST	R18,-Y
     133 933A      ST	R19,-Y
     134 938A      ST	R24,-Y
     135 939A      ST	R25,-Y
     136 93AA      ST	R26,-Y
     137 93BA      ST	R27,-Y
     138 93EA      ST	R30,-Y
     139 93FA      ST	R31,-Y
     13A B60F      IN	R0,0x3F
     13B 920A      ST	R0,-Y
     13C 9721      SBIW	R28,1
(0238) }
(0239) 
(0240) #pragma interrupt_handler timer0_ovf_isr:iv_TIM0_OVF
(0241) void timer0_ovf_isr(void)
(0242) {
(0243)  //mstcnt--;
(0244)   //if(mstcnt==0)
(0245)     //{
(0246)     //  mstcnt=8;
(0247) 
(0248)    // }	 
(0249)  //for(i=0;i<8;i++)
(0250)  tcnt++;
     13D 9180 0075 LDS	R24,tcnt
     13F 9190 0076 LDS	R25,tcnt+1
     141 9601      ADIW	R24,1
     142 9390 0076 STS	tcnt+1,R25
     144 9380 0075 STS	tcnt,R24
(0251) 
(0252)   if(tcnt==1000)
     146 3E88      CPI	R24,0xE8
     147 E0E3      LDI	R30,3
     148 079E      CPC	R25,R30
     149 F009      BEQ	0x014B
     14A C07B      RJMP	0x01C6
(0253)     {
(0254)       tcnt=0;
     14B 2422      CLR	R2
     14C 2433      CLR	R3
     14D 9230 0076 STS	tcnt+1,R3
     14F 9220 0075 STS	tcnt,R2
(0255)       second++;
     151 9180 0079 LDS	R24,second
     153 5F8F      SUBI	R24,0xFF
     154 9380 0079 STS	second,R24
(0256)       if(second==60)
     156 338C      CPI	R24,0x3C
     157 F4A1      BNE	0x016C
(0257)         {
(0258)           second=0;
     158 9220 0079 STS	second,R2
(0259)           minite++;
     15A 9180 0078 LDS	R24,minite
     15C 5F8F      SUBI	R24,0xFF
     15D 9380 0078 STS	minite,R24
(0260)           if(minite==60)
     15F 338C      CPI	R24,0x3C
     160 F459      BNE	0x016C
(0261)             {
(0262)               minite=0;
     161 9220 0078 STS	minite,R2
(0263)               hour++;
     163 9180 0077 LDS	R24,hour
     165 5F8F      SUBI	R24,0xFF
     166 9380 0077 STS	hour,R24
(0264)               if(hour==24)
     168 3188      CPI	R24,0x18
     169 F411      BNE	0x016C
(0265)                 {
(0266)                   hour=0;
     16A 9220 0077 STS	hour,R2
(0267)                 }
(0268)             }
(0269)         }
(0270)       table_2[7]=dispbuf[second%10];
     16C E02A      LDI	R18,0xA
     16D E030      LDI	R19,0
     16E 9100 0079 LDS	R16,second
     170 2711      CLR	R17
     171 940E 0213 CALL	mod16s
     173 01F8      MOVW	R30,R16
     174 E688      LDI	R24,0x68
     175 E090      LDI	R25,0
     176 0FE8      ADD	R30,R24
     177 1FF9      ADC	R31,R25
     178 8020      LDD	R2,Z+0
     179 9220 0067 STS	0x0067,R2
(0271)       table_2[6]=dispbuf[second/10];
     17B E02A      LDI	R18,0xA
     17C E030      LDI	R19,0
     17D 9100 0079 LDS	R16,second
     17F 2711      CLR	R17
     180 940E 0217 CALL	div16s
     182 01F8      MOVW	R30,R16
     183 E688      LDI	R24,0x68
     184 E090      LDI	R25,0
     185 0FE8      ADD	R30,R24
     186 1FF9      ADC	R31,R25
     187 8020      LDD	R2,Z+0
     188 9220 0066 STS	0x0066,R2
(0272)       table_2[4]=dispbuf[minite%10];
     18A E02A      LDI	R18,0xA
     18B E030      LDI	R19,0
     18C 9100 0078 LDS	R16,minite
     18E 2711      CLR	R17
     18F 940E 0213 CALL	mod16s
     191 01F8      MOVW	R30,R16
     192 E688      LDI	R24,0x68
     193 E090      LDI	R25,0
     194 0FE8      ADD	R30,R24
     195 1FF9      ADC	R31,R25
     196 8020      LDD	R2,Z+0
     197 9220 0064 STS	0x0064,R2
(0273)       table_2[3]=dispbuf[minite/10];
     199 E02A      LDI	R18,0xA
     19A E030      LDI	R19,0
     19B 9100 0078 LDS	R16,minite
     19D 2711      CLR	R17
     19E 940E 0217 CALL	div16s
     1A0 01F8      MOVW	R30,R16
     1A1 E688      LDI	R24,0x68
     1A2 E090      LDI	R25,0
     1A3 0FE8      ADD	R30,R24
     1A4 1FF9      ADC	R31,R25
     1A5 8020      LDD	R2,Z+0
     1A6 9220 0063 STS	table_2+3,R2
(0274)       table_2[1]=dispbuf[hour%10];
     1A8 E02A      LDI	R18,0xA
     1A9 E030      LDI	R19,0
     1AA 9100 0077 LDS	R16,hour
     1AC 2711      CLR	R17
     1AD 940E 0213 CALL	mod16s
     1AF 01F8      MOVW	R30,R16
     1B0 E688      LDI	R24,0x68
     1B1 E090      LDI	R25,0
     1B2 0FE8      ADD	R30,R24
     1B3 1FF9      ADC	R31,R25
     1B4 8020      LDD	R2,Z+0
     1B5 9220 0061 STS	table_2+1,R2
(0275)       table_2[0]=dispbuf[hour/10];
     1B7 E02A      LDI	R18,0xA
     1B8 E030      LDI	R19,0
     1B9 9100 0077 LDS	R16,hour
     1BB 2711      CLR	R17
     1BC 940E 0217 CALL	div16s
     1BE 01F8      MOVW	R30,R16
     1BF E688      LDI	R24,0x68
     1C0 E090      LDI	R25,0
     1C1 0FE8      ADD	R30,R24
     1C2 1FF9      ADC	R31,R25
     1C3 8020      LDD	R2,Z+0
     1C4 9220 0060 STS	table_2,R2
(0276) 
(0277)     }
(0278)   DisplayOneChar(i, 1, table_2[i]); //显示单个字符
     1C6 9030 0074 LDS	R3,i
     1C8 E680      LDI	R24,0x60
     1C9 E090      LDI	R25,0
     1CA 2DE3      MOV	R30,R3
     1CB 27FF      CLR	R31
     1CC 0FE8      ADD	R30,R24
     1CD 1FF9      ADC	R31,R25
     1CE 8020      LDD	R2,Z+0
     1CF 8228      STD	Y+0,R2
     1D0 E021      LDI	R18,1
     1D1 2D03      MOV	R16,R3
     1D2 DEEB      RCALL	_DisplayOneChar
(0279)  
(0280)       i++;
     1D3 9180 0074 LDS	R24,i
     1D5 5F8F      SUBI	R24,0xFF
     1D6 9380 0074 STS	i,R24
(0281)       if(i==8)
     1D8 3088      CPI	R24,0x8
     1D9 F419      BNE	0x01DD
(0282)         {
(0283)           i=0;
     1DA 2422      CLR	R2
     1DB 9220 0074 STS	i,R2
(0284)         }
(0285) 
(0286) 
(0287)  TCNT0 = 0x83; //reload counter value
     1DD E883      LDI	R24,0x83
     1DE BF82      OUT	0x32,R24
     1DF 9621      ADIW	R28,1
     1E0 9009      LD	R0,Y+
     1E1 BE0F      OUT	0x3F,R0
     1E2 91F9      LD	R31,Y+
     1E3 91E9      LD	R30,Y+
     1E4 91B9      LD	R27,Y+
     1E5 91A9      LD	R26,Y+
     1E6 9199      LD	R25,Y+
     1E7 9189      LD	R24,Y+
     1E8 9139      LD	R19,Y+
     1E9 9129      LD	R18,Y+
     1EA 9119      LD	R17,Y+
     1EB 9109      LD	R16,Y+
     1EC 9099      LD	R9,Y+
     1ED 9089      LD	R8,Y+
     1EE 9079      LD	R7,Y+
     1EF 9069      LD	R6,Y+
     1F0 9059      LD	R5,Y+
     1F1 9049      LD	R4,Y+
     1F2 9039      LD	R3,Y+
     1F3 9029      LD	R2,Y+
     1F4 9019      LD	R1,Y+
     1F5 9009      LD	R0,Y+
     1F6 9518      RETI
(0288) }
(0289) 
(0290) //call this routine to initialize all peripherals
(0291) void init_devices(void)
(0292) {
(0293)  //stop errant interrupts until set up
(0294)  CLI(); //disable all interrupts
_init_devices:
     1F7 94F8      BCLR	7
(0295)  port_init();
     1F8 DF19      RCALL	_port_init
(0296)  timer0_init();
     1F9 DF23      RCALL	_timer0_init
(0297) 
(0298)  MCUCR = 0x00;
     1FA 2422      CLR	R2
     1FB BE25      OUT	0x35,R2
(0299)  GICR  = 0x00;
     1FC BE2B      OUT	0x3B,R2
(0300)  TIMSK = 0x01; //timer interrupt sources
     1FD E081      LDI	R24,1
     1FE BF89      OUT	0x39,R24
(0301)  SEI(); //re-enable interrupts
     1FF 9478      BSET	7
     200 9508      RET
_main:
  i                    --> Y,+3
     201 9722      SBIW	R28,2
(0302)  //all peripherals are now initialized
(0303) }
(0304) 
(0305) 
(0306) /*******************************************************************************/
(0307) 
(0308) void main(void)
(0309) {
(0310)  unsigned  char i;
(0311)  DDRD=0XFF;//PD设为输出
     202 EF8F      LDI	R24,0xFF
     203 BB81      OUT	0x11,R24
(0312)  DDRB=0XFF;//PB设为输出
     204 BB87      OUT	0x17,R24
(0313)  Delay400Ms(); //启动等待,等LCM讲入工作状态
     205 DEFB      RCALL	_Delay400Ms
(0314)  LCMInit(); //LCM初始化
     206 DE99      RCALL	_LCMInit
(0315)  Delay5Ms(); //延时片刻(可不要)
     207 DEEF      RCALL	_Delay5Ms
(0316) 
(0317)  DisplayListChar(0, 0, table_1);
     208 E584      LDI	R24,0x54
     209 E090      LDI	R25,0
     20A 8399      STD	Y+1,R25
     20B 8388      STD	Y+0,R24
     20C 2722      CLR	R18
     20D 2700      CLR	R16
     20E DEC4      RCALL	_DisplayListChar
(0318)  /*Delay400Ms(); //启动等待,等LCM进入工作状态
(0319)  WriteCommandLCM(0x08,1); //关闭显示
(0320)  WriteCommandLCM(0x01,1); //显示清屏
(0321)  WriteCommandLCM(0x06,1); // 显示光标移动设置
(0322)  WriteCommandLCM(0x0f,1); // 显示开及光标设置,闪
(0323)  for(i=0;i<8;i++)
(0324)  {
(0325)   DisplayOneChar(i, 0, table_1[i]); //显示单个字符
(0326)  }
(0327)  WriteCommandLCM(0x07,1); // 显示光标移动设置
(0328)  
(0329)  for(i=0;i<8;i++)
(0330)  {
(0331)   DisplayOneChar(i, 1, table_2[i]); //显示单个字符
(0332)  }
(0333)  //WriteCommandLCM(0x0c,1); // 显示开及光标设置,不闪
(0334)  //ReadDataLCM();//测试用句无意义*/
(0335)  init_devices();
     20F DFE7      RCALL	_init_devices
(0336)  while(1);
FILE: <library>
     210 CFFF      RJMP	0x0210
     211 9622      ADIW	R28,2
     212 9508      RET
mod16s:
     213 9468      BSET	6
     214 92DA      ST	R13,-Y
     215 2ED1      MOV	R13,R17
     216 C004      RJMP	0x021B
div16s:
     217 94E8      BCLR	6
     218 92DA      ST	R13,-Y
     219 2ED1      MOV	R13,R17
     21A 26D3      EOR	R13,R19
     21B FF17      SBRS	R17,7
     21C C004      RJMP	0x0221
     21D 9510      COM	R17
     21E 9500      COM	R16
     21F 5F0F      SUBI	R16,0xFF
     220 4F1F      SBCI	R17,0xFF
     221 FF37      SBRS	R19,7
     222 C004      RJMP	0x0227
     223 9530      COM	R19
     224 9520      COM	R18
     225 5F2F      SUBI	R18,0xFF
     226 4F3F      SBCI	R19,0xFF
     227 940E 0234 CALL	xdiv16u
     229 FED7      SBRS	R13,7
     22A C004      RJMP	0x022F
     22B 9510      COM	R17
     22C 9500      COM	R16
     22D 5F0F      SUBI	R16,0xFF
     22E 4F1F      SBCI	R17,0xFF
     22F 90D9      LD	R13,Y+
     230 9508      RET
mod16u:
     231 9468      BSET	6
     232 C001      RJMP	xdiv16u
div16u:
     233 94E8      BCLR	6
xdiv16u:
     234 92EA      ST	R14,-Y
     235 92FA      ST	R15,-Y
     236 938A      ST	R24,-Y
     237 24EE      CLR	R14
     238 24FF      CLR	R15
     239 E180      LDI	R24,0x10
     23A 0F00      LSL	R16
     23B 1F11      ROL	R17
     23C 1CEE      ROL	R14
     23D 1CFF      ROL	R15
     23E 16E2      CP	R14,R18
     23F 06F3      CPC	R15,R19
     240 F018      BCS	0x0244
     241 1AE2      SUB	R14,R18
     242 0AF3      SBC	R15,R19
     243 9503      INC	R16
     244 958A      DEC	R24
     245 F7A1      BNE	0x023A
     246 F416      BRTC	0x0249
     247 2D0E      MOV	R16,R14
     248 2D1F      MOV	R17,R15
     249 9189      LD	R24,Y+
     24A 90F9      LD	R15,Y+
     24B 90E9      LD	R14,Y+
     24C 9508      RET
push_xgsetF03C:
     24D 937A      ST	R23,-Y
     24E 936A      ST	R22,-Y
     24F 935A      ST	R21,-Y
     250 934A      ST	R20,-Y
     251 92DA      ST	R13,-Y
     252 92CA      ST	R12,-Y
     253 92BA      ST	R11,-Y
     254 92AA      ST	R10,-Y
     255 9508      RET
pop_xgsetF03C:
     256 90A9      LD	R10,Y+
     257 90B9      LD	R11,Y+
     258 90C9      LD	R12,Y+
     259 90D9      LD	R13,Y+
     25A 9149      LD	R20,Y+
     25B 9159      LD	R21,Y+
     25C 9169      LD	R22,Y+
     25D 9179      LD	R23,Y+
     25E 9508      RET

⌨️ 快捷键说明

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