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

📄 zz.lst

📁 avr基础程序大全
💻 LST
📖 第 1 页 / 共 5 页
字号:
Interrupt Vectors
    00000 940C 0053 JMP	__text_start|__start

Program Code (text area)
__text_start|__start:
    00053 E5CF      LDI	R28,0x5F
    00054 E0D4      LDI	R29,4
    00055 BFCD      OUT	0x3D,R28
    00056 BFDE      OUT	0x3E,R29
    00057 51C0      SUBI	R28,0x10
    00058 40D0      SBCI	R29,0
    00059 EA0A      LDI	R16,0xAA
    0005A 8308      ST	Y,R16
    0005B 2400      CLR	R0
    0005C EAE1      LDI	R30,0xA1
    0005D E0F0      LDI	R31,0
    0005E E010      LDI	R17,0
    0005F 3BEA      CPI	R30,0xBA
    00060 07F1      CPC	R31,R17
    00061 F011      BEQ	0x0064
    00062 9201      ST	Z+,R0
    00063 CFFB      RJMP	0x005F
    00064 8300      ST	Z,R16
    00065 E6E4      LDI	R30,0x64
    00066 E0F0      LDI	R31,0
    00067 E6A0      LDI	R26,0x60
    00068 E0B0      LDI	R27,0
    00069 E010      LDI	R17,0
    0006A E000      LDI	R16,0
    0006B BF0B      OUT	0x3B,R16
    0006C 3AE5      CPI	R30,0xA5
    0006D 07F1      CPC	R31,R17
    0006E F021      BEQ	0x0073
    0006F 95C8      LPM
    00070 9631      ADIW	R30,1
    00071 920D      ST	X+,R0
    00072 CFF9      RJMP	0x006C
    00073 940E 03AB CALL	_main
_exit:
    00075 CFFF      RJMP	_exit
FILE: C:\DOCUME~1\Administrator\桌面\12864_~1\12864.h
(0001) #include <iom16v.h>
(0002) #include <macros.h>
(0003) #define  uchar unsigned char
(0004) #define  uint  unsigned int
(0005) 
(0006) #define clk 7
(0007) #define set_clk PORTC |= BIT(clk)	  
(0008) #define clr_clk PORTC &= ~BIT(clk)   
(0009) 
(0010) #define sid 6
(0011) #define clr_sid PORTC &= ~BIT(sid)  
(0012) #define set_sid PORTC |= BIT(sid)     
(0013) 
(0014) void delay()
(0015) {
(0016) 	NOP();
_delay:
    00076 0000      NOP
(0017) 	NOP();
    00077 0000      NOP
    00078 9508      RET
(0018) }
(0019) void delay_us(uint i)
(0020) {
(0021) 	while(i--)
_delay_us:
  i                    --> R16
    00079 0118      MOVW	R2,R16
    0007A 5001      SUBI	R16,1
    0007B 4010      SBCI	R17,0
    0007C 2022      TST	R2
    0007D F7D9      BNE	0x0079
    0007E 2033      TST	R3
    0007F F7C9      BNE	0x0079
    00080 9508      RET
_delay_ms:
  a                    --> R20
  i                    --> R16
    00081 934A      ST	-Y,R20
    00082 935A      ST	-Y,R21
(0022) 	 {;}
(0023) }
(0024) void delay_ms(uint i)
(0025) {
(0026) 	uint a;
(0027) 	for(;i;i--)
    00083 C00B      RJMP	0x008F
(0028) 		{
(0029) 		for(a=0;a<672;a++);
    00084 2744      CLR	R20
    00085 2755      CLR	R21
    00086 C002      RJMP	0x0089
    00087 5F4F      SUBI	R20,0xFF
    00088 4F5F      SBCI	R21,0xFF
    00089 3A40      CPI	R20,0xA0
    0008A E0E2      LDI	R30,2
    0008B 075E      CPC	R21,R30
    0008C F3D0      BCS	0x0087
    0008D 5001      SUBI	R16,1
    0008E 4010      SBCI	R17,0
    0008F 3000      CPI	R16,0
    00090 0701      CPC	R16,R17
    00091 F791      BNE	0x0084
    00092 9159      LD	R21,Y+
    00093 9149      LD	R20,Y+
    00094 9508      RET
_wr_bit:
  data                 --> R10
  n                    --> R12
    00095 92AA      ST	-Y,R10
    00096 92CA      ST	-Y,R12
    00097 2EA2      MOV	R10,R18
    00098 2EC0      MOV	R12,R16
(0030) 		}
(0031) }
(0032) void wr_bit(uchar n,uchar data)
(0033) {
(0034) 	for(;n;n--)	  		  	   		//写入位数
    00099 C00B      RJMP	0x00A5
(0035) 		{
(0036) 		if(data&0x80)				 
    0009A FEA7      SBRS	R10,7
    0009B C002      RJMP	0x009E
(0037) 			{set_sid;}
    0009C 9AAE      SBI	0x15,6
    0009D C001      RJMP	0x009F
(0038) 		else
(0039) 			{clr_sid;}
    0009E 98AE      CBI	0x15,6
(0040) 		data=data<<1;	  			 
    0009F 0CAA      LSL	R10
(0041) 		delay();
    000A0 DFD5      RCALL	_delay
(0042) 		set_clk;				 
    000A1 9AAF      SBI	0x15,7
(0043) 		delay();
    000A2 DFD3      RCALL	_delay
(0044) 		clr_clk;
    000A3 98AF      CBI	0x15,7
    000A4 94CA      DEC	R12
    000A5 20CC      TST	R12
    000A6 F799      BNE	0x009A
    000A7 90C9      LD	R12,Y+
    000A8 90A9      LD	R10,Y+
    000A9 9508      RET
_write_shuju:
  b                    --> R20
  a                    --> R10
    000AA 92AA      ST	-Y,R10
    000AB 934A      ST	-Y,R20
    000AC 2F42      MOV	R20,R18
    000AD 2EA0      MOV	R10,R16
(0045) 		}
(0046) }
(0047) void write_shuju(uchar a,uchar b)
(0048) {
(0049) 	clr_clk;
    000AE 98AF      CBI	0x15,7
(0050) 
(0051) 	wr_bit(5,0xFF);			  		 
    000AF EF2F      LDI	R18,0xFF
    000B0 E005      LDI	R16,5
    000B1 DFE3      RCALL	_wr_bit
(0052) 
(0053) 	wr_bit(1,0x00);	 				 
    000B2 2722      CLR	R18
    000B3 E001      LDI	R16,1
    000B4 DFE0      RCALL	_wr_bit
(0054) 	
(0055) 	if(a==0)	 					 
    000B5 20AA      TST	R10
    000B6 F421      BNE	0x00BB
(0056) 		wr_bit(1,0x00);				 
    000B7 2722      CLR	R18
    000B8 E001      LDI	R16,1
    000B9 DFDB      RCALL	_wr_bit
    000BA C003      RJMP	0x00BE
(0057) 	else
(0058) 		wr_bit(1,0x80);				 
    000BB E820      LDI	R18,0x80
    000BC E001      LDI	R16,1
    000BD DFD7      RCALL	_wr_bit
(0059) 
(0060) 	wr_bit(1,0x00);	 				//写入一个0
    000BE 2722      CLR	R18
    000BF E001      LDI	R16,1
    000C0 DFD4      RCALL	_wr_bit
(0061) 	
(0062) 	wr_bit(4,b);					//写入数据的高4位
    000C1 2F24      MOV	R18,R20
    000C2 E004      LDI	R16,4
    000C3 DFD1      RCALL	_wr_bit
(0063) 	
(0064) 	wr_bit(4,0x00);					//写入4个0
    000C4 2722      CLR	R18
    000C5 E004      LDI	R16,4
    000C6 DFCE      RCALL	_wr_bit
(0065) 	
(0066) 	wr_bit(4,(b<<4));				//写入数据的低4位
    000C7 2F24      MOV	R18,R20
    000C8 702F      ANDI	R18,0xF
    000C9 9522      SWAP	R18
    000CA E004      LDI	R16,4
    000CB DFC9      RCALL	_wr_bit
(0067) 	
(0068) 	wr_bit(4,0x00);					//写入4个0
    000CC 2722      CLR	R18
    000CD E004      LDI	R16,4
    000CE DFC6      RCALL	_wr_bit
(0069) 
(0070) 	set_sid;					  
    000CF 9AAE      SBI	0x15,6
    000D0 9149      LD	R20,Y+
    000D1 90A9      LD	R10,Y+
    000D2 9508      RET
(0071) }
(0072) void lcd12864_init()
(0073) {
(0074) 	write_shuju(0,0x30);			//设置数据方式:8位
_lcd12864_init:
    000D3 E320      LDI	R18,0x30
    000D4 2700      CLR	R16
    000D5 DFD4      RCALL	_write_shuju
(0075) 	delay_us(200);
    000D6 EC08      LDI	R16,0xC8
    000D7 E010      LDI	R17,0
    000D8 DFA0      RCALL	_delay_us
(0076) 	write_shuju(0,0x30);			//设置数据方式:8位
    000D9 E320      LDI	R18,0x30
    000DA 2700      CLR	R16
    000DB DFCE      RCALL	_write_shuju
(0077) 	delay_us(80);
    000DC E500      LDI	R16,0x50
    000DD E010      LDI	R17,0
    000DE DF9A      RCALL	_delay_us
(0078) 	write_shuju(0,0x0C);			//开显示
    000DF E02C      LDI	R18,0xC
    000E0 2700      CLR	R16
    000E1 DFC8      RCALL	_write_shuju
(0079) 	delay_us(80);
    000E2 E500      LDI	R16,0x50
    000E3 E010      LDI	R17,0
    000E4 DF94      RCALL	_delay_us
(0080) 	write_shuju(0,0x40);			//开显示
    000E5 E420      LDI	R18,0x40
    000E6 2700      CLR	R16
    000E7 DFC2      RCALL	_write_shuju
(0081) 	delay_us(200);
    000E8 EC08      LDI	R16,0xC8
    000E9 E010      LDI	R17,0
    000EA DF8E      RCALL	_delay_us
(0082) 	write_shuju(0,0x01);			//清屏
    000EB E021      LDI	R18,1
    000EC 2700      CLR	R16
    000ED DFBC      RCALL	_write_shuju
(0083) 	delay_ms(100);
    000EE E604      LDI	R16,0x64
    000EF E010      LDI	R17,0
    000F0 CF90      RJMP	_delay_ms
_write_hz:
  s                    --> R20
    000F1 934A      ST	-Y,R20
    000F2 935A      ST	-Y,R21
    000F3 01A8      MOVW	R20,R16
(0084) 
(0085) }
(0086) void write_hz(char *s)
(0087)    {
    000F4 C006      RJMP	0x00FB
(0088) 	while(*s)
(0089) 	    {
(0090) 		write_shuju(1,*s);
    000F5 01FA      MOVW	R30,R20
    000F6 8120      LD	R18,Z
    000F7 E001      LDI	R16,1
    000F8 DFB1      RCALL	_write_shuju
(0091) 		s++;
    000F9 5F4F      SUBI	R20,0xFF
    000FA 4F5F      SBCI	R21,0xFF
    000FB 01FA      MOVW	R30,R20
    000FC 8020      LD	R2,Z
    000FD 2022      TST	R2
    000FE F7B1      BNE	0x00F5
    000FF 9159      LD	R21,Y+
    00100 9149      LD	R20,Y+
    00101 9508      RET
_locate:
  y                    --> R20
  x                    --> R10
    00102 940E 0495 CALL	push_xgsetF00C
    00104 2F42      MOV	R20,R18
    00105 2EA0      MOV	R10,R16
(0092) 		}
(0093) }
(0094) void locate(uchar x,uchar y)
(0095) {
(0096) 	switch(x)
    00106 2D6A      MOV	R22,R10
    00107 2777      CLR	R23
    00108 3061      CPI	R22,1
    00109 E0E0      LDI	R30,0
    0010A 077E      CPC	R23,R30
    0010B F069      BEQ	0x0119
    0010C 3062      CPI	R22,2
    0010D E0E0      LDI	R30,0
    0010E 077E      CPC	R23,R30
    0010F F079      BEQ	0x011F
    00110 3063      CPI	R22,3
    00111 E0E0      LDI	R30,0
    00112 077E      CPC	R23,R30
    00113 F089      BEQ	0x0125
    00114 3064      CPI	R22,4
    00115 E0E0      LDI	R30,0
    00116 077E      CPC	R23,R30
    00117 F099      BEQ	0x012B
    00118 C017      RJMP	0x0130
(0097) 		{
(0098) 		case 1:write_shuju(0,(0x80+y-1)); break;
    00119 2F24      MOV	R18,R20
    0011A 5820      SUBI	R18,0x80
    0011B 5021      SUBI	R18,1
    0011C 2700      CLR	R16
    0011D DF8C      RCALL	_write_shuju
    0011E C011      RJMP	0x0130
(0099) 		case 2:write_shuju(0,(0x90+y-1));break;
    0011F 2F24      MOV	R18,R20
    00120 5720      SUBI	R18,0x70
    00121 5021      SUBI	R18,1
    00122 2700      CLR	R16
    00123 DF86      RCALL	_write_shuju
    00124 C00B      RJMP	0x0130
(0100) 		case 3:write_shuju(0,(0x88+y-1));break;	
    00125 2F24      MOV	R18,R20
    00126 5728      SUBI	R18,0x78
    00127 5021      SUBI	R18,1
    00128 2700      CLR	R16
    00129 DF80      RCALL	_write_shuju
    0012A C005      RJMP	0x0130
(0101) 		case 4:write_shuju(0,(0x98+y-1));break;
    0012B 2F24      MOV	R18,R20
    0012C 5628      SUBI	R18,0x68
    0012D 5021      SUBI	R18,1
    0012E 2700      CLR	R16
    0012F DF7A      RCALL	_write_shuju
(0102) 		default:break;		 
    00130 940C 049C JMP	pop_xgsetF00C
(0103) 		}
(0104) }
(0105) void cls()
(0106) {
(0107) 	delay_us(200);
_cls:
    00132 EC08      LDI	R16,0xC8
    00133 E010      LDI	R17,0
    00134 DF44      RCALL	_delay_us
(0108) 	write_shuju(0,0x01);			//清屏
    00135 E021      LDI	R18,1
    00136 2700      CLR	R16
    00137 DF72      RCALL	_write_shuju
(0109) 	delay_ms(20);
    00138 E104      LDI	R16,0x14
    00139 E010      LDI	R17,0
    0013A CF46      RJMP	_delay_ms
_mega16_adc:
  addata               --> R10
    0013B 92AA      ST	-Y,R10
    0013C 92BA      ST	-Y,R11
FILE: C:\DOCUME~1\Administrator\桌面\12864_~1\adc.h
(0001) #include <iom16v.h>
(0002) #include <macros.h>
(0003) #define  uchar unsigned char
(0004) #define  uint  unsigned int
(0005) uint mega16_adc()
(0006) {
(0007)      uint addata;
(0008) 	 DDRA&=~BIT(0);
    0013D 98D0      CBI	0x1A,0
(0009) 	 PORTA&=~BIT(0);
    0013E 98D8      CBI	0x1B,0
(0010) 	 ADMUX=0x40;
    0013F E480      LDI	R24,0x40
    00140 B987      OUT	0x07,R24
(0011) 	 ADCSR=0X80;
    00141 E880      LDI	R24,0x80
    00142 B986      OUT	0x06,R24
(0012) 	 ADCSR|=BIT(6);
    00143 9A36      SBI	0x06,6
(0013) 	 while(!(ADCSR&(BIT(4))));
    00144 9B34      SBIS	0x06,4
    00145 CFFE      RJMP	0x0144
(0014)      addata=ADCL;
    00146 B0A4      IN	R10,0x04
    00147 24BB      CLR	R11
(0015) 	 addata=addata+ADCH*256;
    00148 B125      IN	R18,0x05
    00149 2733      CLR	R19
    0014A E000      LDI	R16,0
    0014B E011      LDI	R17,1
    0014C 940E 0485 CALL	empy16s
    0014E 0EA0      ADD	R10,R16
    0014F 1EB1      ADC	R11,R17

⌨️ 快捷键说明

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