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

📄 1602_duoji.lst

📁 用avr的m16产生pwm波控制舵机的程序!
💻 LST
📖 第 1 页 / 共 4 页
字号:
(0024)   {      
(0025)     PORTC^=0B00000001;    //PORTB.0 反转  
    0132 E081      LDI	R24,1
    0133 B225      IN	R2,0x15
    0134 2628      EOR	R2,R24
    0135 BA25      OUT	0x15,R2
(0026)     if((PORTC&0x01)==0x01)
    0136 B385      IN	R24,0x15
    0137 7081      ANDI	R24,1
    0138 3081      CPI	R24,1
    0139 F449      BNE	0x0143
(0027) 	{
(0028)       zq=t1; 
    013A 9020009D  LDS	R2,t1
    013C 9030009E  LDS	R3,t1+1
    013E 923000A0  STS	zq+1,R3
    0140 9220009F  STS	zq,R2
(0029)     }else
    0142 C008      RJMP	0x014B
(0030)     {
(0031)       zq=t2;
    0143 9020009B  LDS	R2,t2
    0145 9030009C  LDS	R3,t2+1
    0147 923000A0  STS	zq+1,R3
    0149 9220009F  STS	zq,R2
(0032)     }          
(0033)   }
    014B 9029      LD	R2,Y+
    014C BE2F      OUT	0x3F,R2
    014D 9199      LD	R25,Y+
    014E 9189      LD	R24,Y+
    014F 9039      LD	R3,Y+
    0150 9029      LD	R2,Y+
    0151 9518      RETI
(0034) }
(0035) void timer2_init(void)//50kHz
(0036) {
(0037)  //TCCR2 = 0x00; //stop
(0038) ASSR=0x00;
_timer2_init:
    0152 2422      CLR	R2
    0153 BC22      OUT	0x22,R2
(0039) TCCR2=0x02;
    0154 E082      LDI	R24,2
    0155 BD85      OUT	0x25,R24
(0040) TCNT2=0xEF;
    0156 EE8F      LDI	R24,0xEF
    0157 BD84      OUT	0x24,R24
(0041) OCR2=0x00;
    0158 BC23      OUT	0x23,R2
    0159 9508      RET
_showtime:
  i                    --> Y+3
  th                   --> R22
  tl                   --> R20
  s                    --> R10
    015A 940E0448  CALL	push_gset3
    015C 9722      SBIW	R28,2
(0042) }
(0043) /************************************************
(0044) 1302显示子程序
(0045) ************************************************/
(0046) void showtime()
(0047) {
(0048)  	  uchar s,i,th,tl;
(0049)  //1302
(0050)      s=read_data(0x8b);
    015D E80B      LDI	R16,0x8B
    015E 940E0397  CALL	_read_data
    0160 2EA0      MOV	R10,R16
(0051) 	 tl=s&0x0f;
    0161 2D4A      MOV	R20,R10
    0162 704F      ANDI	R20,0xF
(0052) 	  switch(tl)
    0163 2F64      MOV	R22,R20
    0164 2777      CLR	R23
    0165 3061      CPI	R22,1
    0166 E0E0      LDI	R30,0
    0167 077E      CPC	R23,R30
    0168 F0C9      BEQ	0x0182
    0169 3062      CPI	R22,2
    016A E0E0      LDI	R30,0
    016B 077E      CPC	R23,R30
    016C F0F1      BEQ	0x018B
    016D 3063      CPI	R22,3
    016E E0E0      LDI	R30,0
    016F 077E      CPC	R23,R30
    0170 F119      BEQ	0x0194
    0171 3064      CPI	R22,4
    0172 E0E0      LDI	R30,0
    0173 077E      CPC	R23,R30
    0174 F141      BEQ	0x019D
    0175 3065      CPI	R22,5
    0176 E0E0      LDI	R30,0
    0177 077E      CPC	R23,R30
    0178 F169      BEQ	0x01A6
    0179 3066      CPI	R22,6
    017A E0E0      LDI	R30,0
    017B 077E      CPC	R23,R30
    017C F191      BEQ	0x01AF
    017D 3067      CPI	R22,7
    017E E0E0      LDI	R30,0
    017F 077E      CPC	R23,R30
    0180 F1B9      BEQ	0x01B8
    0181 C03E      RJMP	0x01C0
(0053) 	  		{
(0054) 			case 1:LCD_write_string(0,0,"monday");break;
    0182 E984      LDI	R24,0x94
    0183 E090      LDI	R25,0
    0184 8399      STD	Y+1,R25
    0185 8388      STD	Y+0,R24
    0186 2722      CLR	R18
    0187 2700      CLR	R16
    0188 940E0105  CALL	_LCD_write_string
    018A C035      RJMP	0x01C0
(0055) 			case 2:LCD_write_string(0,0,"tuesday");break;
    018B E88C      LDI	R24,0x8C
    018C E090      LDI	R25,0
    018D 8399      STD	Y+1,R25
    018E 8388      STD	Y+0,R24
    018F 2722      CLR	R18
    0190 2700      CLR	R16
    0191 940E0105  CALL	_LCD_write_string
    0193 C02C      RJMP	0x01C0
(0056) 			case 3:LCD_write_string(0,0,"wednesday");break;
    0194 E882      LDI	R24,0x82
    0195 E090      LDI	R25,0
    0196 8399      STD	Y+1,R25
    0197 8388      STD	Y+0,R24
    0198 2722      CLR	R18
    0199 2700      CLR	R16
    019A 940E0105  CALL	_LCD_write_string
    019C C023      RJMP	0x01C0
(0057) 			case 4:LCD_write_string(0,0,"thursday");break;
    019D E789      LDI	R24,0x79
    019E E090      LDI	R25,0
    019F 8399      STD	Y+1,R25
    01A0 8388      STD	Y+0,R24
    01A1 2722      CLR	R18
    01A2 2700      CLR	R16
    01A3 940E0105  CALL	_LCD_write_string
    01A5 C01A      RJMP	0x01C0
(0058) 			case 5:LCD_write_string(0,0,"friday");break;
    01A6 E782      LDI	R24,0x72
    01A7 E090      LDI	R25,0
    01A8 8399      STD	Y+1,R25
    01A9 8388      STD	Y+0,R24
    01AA 2722      CLR	R18
    01AB 2700      CLR	R16
    01AC 940E0105  CALL	_LCD_write_string
    01AE C011      RJMP	0x01C0
(0059) 			case 6:LCD_write_string(0,0,"saturday");break;
    01AF E689      LDI	R24,0x69
    01B0 E090      LDI	R25,0
    01B1 8399      STD	Y+1,R25
    01B2 8388      STD	Y+0,R24
    01B3 2722      CLR	R18
    01B4 2700      CLR	R16
    01B5 940E0105  CALL	_LCD_write_string
    01B7 C008      RJMP	0x01C0
(0060) 			case 7:LCD_write_string(0,0,"sunday");break;
    01B8 E682      LDI	R24,0x62
    01B9 E090      LDI	R25,0
    01BA 8399      STD	Y+1,R25
    01BB 8388      STD	Y+0,R24
    01BC 2722      CLR	R18
    01BD 2700      CLR	R16
    01BE 940E0105  CALL	_LCD_write_string
(0061) 			}
(0062) 	  LCD_set_xy(0,1);
    01C0 E021      LDI	R18,1
    01C1 2700      CLR	R16
    01C2 940E00F2  CALL	_LCD_set_xy
(0063) 	  //year
(0064) 	  s=read_data(0x8d);
    01C4 E80D      LDI	R16,0x8D
    01C5 940E0397  CALL	_read_data
    01C7 2EA0      MOV	R10,R16
(0065) 	  tl=s&0x0f;
    01C8 2D4A      MOV	R20,R10
    01C9 704F      ANDI	R20,0xF
(0066)    	  th=(s>>4);
    01CA 2D6A      MOV	R22,R10
    01CB 9562      SWAP	R22
    01CC 706F      ANDI	R22,0xF
(0067)    	  //LCD_write_char(0,th+48);
(0068)       LCD_write_char(0,tl+48);
    01CD 2F24      MOV	R18,R20
    01CE 2733      CLR	R19
    01CF 5D20      SUBI	R18,0xD0
    01D0 4F3F      SBCI	R19,0xFF
    01D1 2700      CLR	R16
    01D2 2711      CLR	R17
    01D3 940E0089  CALL	_LCD_write_char
(0069) 	  LCD_write_char(0,'/');
    01D5 E22F      LDI	R18,0x2F
    01D6 E030      LDI	R19,0
    01D7 2700      CLR	R16
    01D8 2711      CLR	R17
    01D9 940E0089  CALL	_LCD_write_char
(0070) 	  //month
(0071)    	  s=read_data(0x89);
    01DB E809      LDI	R16,0x89
    01DC 940E0397  CALL	_read_data
    01DE 2EA0      MOV	R10,R16
(0072) 	  tl=s&0x0f;
    01DF 2D4A      MOV	R20,R10
    01E0 704F      ANDI	R20,0xF
(0073)    	  th=(s>>4);
    01E1 2D6A      MOV	R22,R10
    01E2 9562      SWAP	R22
    01E3 706F      ANDI	R22,0xF
(0074)    	  LCD_write_char(0,th+48);
    01E4 2F26      MOV	R18,R22
    01E5 2733      CLR	R19
    01E6 5D20      SUBI	R18,0xD0
    01E7 4F3F      SBCI	R19,0xFF
    01E8 2700      CLR	R16
    01E9 2711      CLR	R17
    01EA 940E0089  CALL	_LCD_write_char
(0075)       LCD_write_char(0,tl+48);
    01EC 2F24      MOV	R18,R20
    01ED 2733      CLR	R19
    01EE 5D20      SUBI	R18,0xD0
    01EF 4F3F      SBCI	R19,0xFF
    01F0 2700      CLR	R16
    01F1 2711      CLR	R17
    01F2 940E0089  CALL	_LCD_write_char
(0076) 	  LCD_write_char(0,'/');
    01F4 E22F      LDI	R18,0x2F
    01F5 E030      LDI	R19,0
    01F6 2700      CLR	R16
    01F7 2711      CLR	R17
    01F8 940E0089  CALL	_LCD_write_char
(0077) 	  //day
(0078)    	  s=read_data(0x87);
    01FA E807      LDI	R16,0x87
    01FB 940E0397  CALL	_read_data
    01FD 2EA0      MOV	R10,R16
(0079) 	  tl=s&0x0f;
    01FE 2D4A      MOV	R20,R10
    01FF 704F      ANDI	R20,0xF
(0080)    	  th=(s>>4);
    0200 2D6A      MOV	R22,R10
    0201 9562      SWAP	R22
    0202 706F      ANDI	R22,0xF
(0081)       LCD_write_char(0,th+48);
    0203 2F26      MOV	R18,R22
    0204 2733      CLR	R19
    0205 5D20      SUBI	R18,0xD0
    0206 4F3F      SBCI	R19,0xFF
    0207 2700      CLR	R16
    0208 2711      CLR	R17
    0209 940E0089  CALL	_LCD_write_char
(0082)       LCD_write_char(0,tl+48);
    020B 2F24      MOV	R18,R20
    020C 2733      CLR	R19
    020D 5D20      SUBI	R18,0xD0
    020E 4F3F      SBCI	R19,0xFF
    020F 2700      CLR	R16
    0210 2711      CLR	R17
    0211 940E0089  CALL	_LCD_write_char
(0083) 	  //LCD_write_char(0,' ');
(0084) 	  LCD_write_char(0,' ');
    0213 E220      LDI	R18,0x20
    0214 E030      LDI	R19,0
    0215 2700      CLR	R16
    0216 2711      CLR	R17
    0217 940E0089  CALL	_LCD_write_char
(0085) 	  // LCD_set_xy(0,1);
(0086) 	  //hour
(0087)    	  s=read_data(0x85);
    0219 E805      LDI	R16,0x85
    021A 940E0397  CALL	_read_data
    021C 2EA0      MOV	R10,R16
(0088) 	  tl=s&0x0f;
    021D 2D4A      MOV	R20,R10
    021E 704F      ANDI	R20,0xF
(0089)    	  th=(s>>4);
    021F 2D6A      MOV	R22,R10
    0220 9562      SWAP	R22
    0221 706F      ANDI	R22,0xF
(0090)    	  LCD_write_char(0,th+48);
    0222 2F26      MOV	R18,R22
    0223 2733      CLR	R19
    0224 5D20      SUBI	R18,0xD0
    0225 4F3F      SBCI	R19,0xFF
    0226 2700      CLR	R16
    0227 2711      CLR	R17
    0228 940E0089  CALL	_LCD_write_char
(0091)       LCD_write_char(0,tl+48);
    022A 2F24      MOV	R18,R20
    022B 2733      CLR	R19
    022C 5D20      SUBI	R18,0xD0
    022D 4F3F      SBCI	R19,0xFF
    022E 2700      CLR	R16
    022F 2711      CLR	R17
    0230 940E0089  CALL	_LCD_write_char
(0092) 	  LCD_write_char(0,':');
    0232 E32A      LDI	R18,0x3A
    0233 E030      LDI	R19,0
    0234 2700      CLR	R16
    0235 2711      CLR	R17
    0236 940E0089  CALL	_LCD_write_char
(0093) 	  //min
(0094)    	  s=read_data(0x83);
    0238 E803      LDI	R16,0x83
    0239 940E0397  CALL	_read_data
    023B 2EA0      MOV	R10,R16
(0095) 	  tl=s&0x0f;
    023C 2D4A      MOV	R20,R10
    023D 704F      ANDI	R20,0xF
(0096)    	  th=(s>>4);
    023E 2D6A      MOV	R22,R10
    023F 9562      SWAP	R22
    0240 706F      ANDI	R22,0xF
(0097)    	  LCD_write_char(0,th+48);
    0241 2F26      MOV	R18,R22
    0242 2733      CLR	R19
    0243 5D20      SUBI	R18,0xD0
    0244 4F3F      SBCI	R19,0xFF
    0245 2700      CLR	R16
    0246 2711      CLR	R17
    0247 940E0089  CALL	_LCD_write_char
(0098)       LCD_write_char(0,tl+48);
    0249 2F24      MOV	R18,R20
    024A 2733      CLR	R19
    024B 5D20      SUBI	R18,0xD0
    024C 4F3F      SBCI	R19,0xFF
    024D 2700      CLR	R16
    024E 2711      CLR	R17
    024F 940E0089  CALL	_LCD_write_char
(0099) 	  LCD_write_char(0,':');
    0251 E32A      LDI	R18,0x3A
    0252 E030      LDI	R19,0
    0253 2700      CLR	R16
    0254 2711      CLR	R17
    0255 940E0089  CALL	_LCD_write_char
(0100) 	  //sec
(0101)    	  s=read_data(0x81);
    0257 E801      LDI	R16,0x81
    0258 940E0397  CALL	_read_data
    025A 2EA0      MOV	R10,R16
(0102) 	  tl=s&0x0f;
    025B 2D4A      MOV	R20,R10
    025C 704F      ANDI	R20,0xF
(0103)    	  th=(s>>4);
    025D 2D6A      MOV	R22,R10
    025E 9562      SWAP	R22
    025F 706F      ANDI	R22,0xF
(0104)    	  LCD_write_char(0,th+48);
    0260 2F26      MOV	R18,R22
    0261 2733      CLR	R19
    0262 5D20      SUBI	R18,0xD0
    0263 4F3F      SBCI	R19,0xFF
    0264 2700      CLR	R16
    0265 2711      CLR	R17
    0266 940E0089  CALL	_LCD_write_char
(0105)       LCD_write_char(0,tl+48);
    0268 2F24      MOV	R18,R20
    0269 2733      CLR	R19
    026A 5D20      SUBI	R18,0xD0
    026B 4F3F      SBCI	R19,0xFF
    026C 2700      CLR	R16
    026D 2711      CLR	R17
    026E 940E0089  CALL	_LCD_write_char
    0270 9622      ADIW	R28,2
    0271 940E043E  CALL	pop_gset3
    0273 9508      RET
_main:
  dout                 --> Y+11
  i                    --> Y+10
  aa                   --> Y+9
    0274 972C      SBIW	R28,0xC
(0106)      //date
(0107) }
(0108) //////////////////////////////////////////////////////////////
(0109) //k1接pd0 k2接pd1 k3接pd2
(0110) /*void settime()
(0111) {
(0112) uchar dout=0,i,j,k;
(0113) ret:;
(0114) PORTC  = 0x00;
(0115) DDRC  = 0xff;
(0116) write_data(0x8e,0x00);      //关闭寄存器写保护
(0117) dout=PINC;
(0118) i=((dout&0x40)==0x40);
(0119) delay_nms(100);
(0120) if(i)
(0121) {
(0122) n++;
(0123) t=0;
(0124) LCD_write_char(0x10,0);//光标自动右移
(0125) if(n==15)n=0;}
(0126)  switch(n)
(0127) 	  {
(0128) 		case 1 :dout=PINC;j=((dout&0x80)==0x80);
(0129) 		      if(j)
(0130) 		      { t++;
(0131) 			   write_data(0x80,((read_data(0x81))&0xf0)|t);;
(0132) 			   LCD_set_xy(1,1);

⌨️ 快捷键说明

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