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

📄 pcf8591.lst

📁 ATmega16应用例子
💻 LST
📖 第 1 页 / 共 4 页
字号:
(0004) 目    的:   建立PCF8591测试程序
(0005) 	
(0006) 目标系统:   基于AVR单片机
(0007) 		                                                                
(0008) 应用软件:   ICCAVR
(0009) 		                                                                
(0010) 版    本:   Version 1.0                                                          
(0011) 		                                                                
(0012) 圆版时间:   2005-06-25
(0013) 	
(0014) 开发人员:   SEE(中文名不告诉你~怕你骂我)
(0015) 
(0016) 说	 明:   若用于商业用途,请保留此段文字或注明代码来源
(0017) 	
(0018) 	深 圳 微 雪 电 子 保 留 所 有 的 版 权     
(0019) *********************************************************************/
(0020) 
(0021) /*01010101010101010101010101010101010101010101010101010101010101010101
(0022) ----------------------------------------------------------------------
(0023) 版本更新记录:
(0024) 		版    本:   Version 1.1
(0025) 		圆版时间:   2005-03-25
(0026) ----------------------------------------------------------------------
(0027) 接入模块: PCF8591
(0028) 接口说明: 见程序
(0029) ----------------------------------------------------------------------
(0030) 注意事项:
(0031) 		* 
(0032) ----------------------------------------------------------------------
(0033) 10101010101010101010101010101010101010101010101010101010101010101010*/
(0034) 
(0035) #include <iom16v.h>
(0036) 
(0037) #define WR_DADR		0x90	//write device-address
(0038) #define RD_DADR		0x91	//read device-address
(0039) #include "D:\ICC_H\PCF8591.H"
(0040) 
(0041) #define DISP_DDR	DDRA
(0042) #define DISP_PORT	PORTA
(0043) 
(0044) /*--------------------------------------------------------------------
(0045) 函数名称:
(0046) 函数功能:
(0047) 注意事项:
(0048) 提示说明:
(0049) 输    入:
(0050) 返    回:
(0051) --------------------------------------------------------------------*/
(0052) void errDisp()				
(0053) {
(0054)  	DISP_PORT = 0X55;
_errDisp:
    021A E585      LDI	R24,0x55
    021B BB8B      OUT	0x1B,R24
(0055) 	delay50ms(4);
    021C E004      LDI	R16,4
    021D E010      LDI	R17,0
    021E DFC4      RCALL	_delay50ms
(0056) 	DISP_PORT = 0X00;
    021F 2422      CLR	R2
    0220 BA2B      OUT	0x1B,R2
(0057) 	delay50ms(4);
    0221 E004      LDI	R16,4
    0222 E010      LDI	R17,0
    0223 DFBF      RCALL	_delay50ms
(0058) 	DISP_PORT = 0XAA;
    0224 EA8A      LDI	R24,0xAA
    0225 BB8B      OUT	0x1B,R24
(0059) 	delay50ms(4);
    0226 E004      LDI	R16,4
    0227 E010      LDI	R17,0
    0228 DFBA      RCALL	_delay50ms
(0060) 	DISP_PORT = 0X00;
    0229 2422      CLR	R2
    022A BA2B      OUT	0x1B,R2
(0061) 	delay50ms(4);
    022B E004      LDI	R16,4
    022C E010      LDI	R17,0
(0062) }
    022D CFB5      RJMP	_delay50ms
(0063) /*--------------------------------------------------------------------
(0064) 函数全称:
(0065) 函数功能:
(0066) 注意事项:最好不要将 TWBR 的值改太小,否则可能出错
(0067) 提示说明:假设系统时钟为16M,则TWI波特率=CLK/(16+2*(TWBR)*4)=400K
(0068) 输    入:
(0069) 返    回:
(0070) --------------------------------------------------------------------*/
(0071) void twi_init()	 	 	//TWI(I2C)初始化
(0072) {
(0073) 	TWBR = 0X12;		//设置TWI波特率  
_twi_init:
    022E E182      LDI	R24,0x12
    022F B980      OUT	0x00,R24
(0074) 	TWSR &= 0XFC;		//设置TWI预分频 为 1
    0230 B181      IN	R24,0x01
    0231 7F8C      ANDI	R24,0xFC
    0232 B981      OUT	0x01,R24
(0075) }
    0233 9508      RET
_main:
  t                    --> Y+2
  DAval                --> R20
  pGetDat              --> R22
    0234 9723      SBIW	R28,3
(0076) /*--------------------------------------------------------------------
(0077) 函数名称:
(0078) 函数功能:
(0079) 注意事项:
(0080) 提示说明:
(0081) 输    入:
(0082) 返    回:
(0083) --------------------------------------------------------------------*/
(0084) void main()
(0085) {
(0086) 	uint8 DAval=0,t;
    0235 2744      CLR	R20
(0087) 	uint8 *pGetDat=&t;	//随便给"pGetDat"一个地址以防内存错误
    0236 01BE      MOVW	R22,R28
    0237 5F6E      SUBI	R22,0xFE
    0238 4F7F      SBCI	R23,0xFF
(0088) 
(0089) 	DISP_DDR = 0XFF;
    0239 EF8F      LDI	R24,0xFF
    023A BB8A      OUT	0x1A,R24
(0090) 	twi_init();
    023B DFF2      RCALL	_twi_init
    023C C00F      RJMP	0x024C
(0091) 	
(0092) 	while(1)
(0093) 	{
(0094) 		PCF8591_getAD(MODE0,CHNL0,pGetDat);
    023D 8379      STD	Y+1,R23
    023E 8368      STD	Y+0,R22
    023F 2722      CLR	R18
    0240 2700      CLR	R16
    0241 DFB7      RCALL	_PCF8591_getAD
(0095) 		DISP_PORT = *pGetDat;
    0242 01FB      MOVW	R30,R22
    0243 8020      LDD	R2,Z+0
    0244 BA2B      OUT	0x1B,R2
(0096) 		PCF8591_setDA(DAval++);
    0245 2E24      MOV	R2,R20
    0246 5F4F      SUBI	R20,0xFF
    0247 2D02      MOV	R16,R2
    0248 DFC4      RCALL	_PCF8591_setDA
(0097) 		delay50ms(4);
    0249 E004      LDI	R16,4
    024A E010      LDI	R17,0
    024B DF97      RCALL	_delay50ms
    024C CFF0      RJMP	0x023D
(0098) 	}
(0099) }
FILE: <library>
    024D 9623      ADIW	R28,3
    024E 9508      RET
push_arg4:
    024F 933A      ST	R19,-Y
    0250 932A      ST	R18,-Y
push_arg2:
    0251 931A      ST	R17,-Y
    0252 930A      ST	R16,-Y
    0253 9508      RET
div32u:
    0254 94E8      BCLR	6
    0255 C001      RJMP	0x0257
mod32u:
    0256 9468      BSET	6
    0257 D02F      RCALL	long_div_prolog
    0258 24CC      CLR	R12
    0259 C008      RJMP	0x0262
div32s:
    025A 94E8      BCLR	6
    025B C001      RJMP	0x025D
mod32s:
    025C 9468      BSET	6
    025D D029      RCALL	long_div_prolog
    025E FD37      SBRC	R19,7
    025F D053      RCALL	neg_R16_R19
    0260 FDB7      SBRC	R27,7
    0261 D05A      RCALL	neg_R24_R27
    0262 2477      CLR	R7
    0263 2488      CLR	R8
    0264 2499      CLR	R9
    0265 24AA      CLR	R10
    0266 24BB      CLR	R11
    0267 D041      RCALL	tst_R16_R19
    0268 F0C1      BEQ	0x0281
    0269 D044      RCALL	tst_R24_R27
    026A F0B1      BEQ	0x0281
    026B E2E8      LDI	R30,0x28
    026C 0F00      LSL	R16
    026D 1F11      ROL	R17
    026E 1F22      ROL	R18
    026F 1F33      ROL	R19
    0270 1C77      ROL	R7
    0271 1C88      ROL	R8
    0272 1C99      ROL	R9
    0273 1CAA      ROL	R10
    0274 1CBB      ROL	R11
    0275 1688      CP	R8,R24
    0276 0699      CPC	R9,R25
    0277 06AA      CPC	R10,R26
    0278 06BB      CPC	R11,R27
    0279 F028      BCS	0x027F
    027A 1A88      SUB	R8,R24
    027B 0A99      SBC	R9,R25
    027C 0AAA      SBC	R10,R26
    027D 0ABB      SBC	R11,R27
    027E 9503      INC	R16
    027F 95EA      DEC	R30
    0280 F759      BNE	0x026C
    0281 F426      BRTC	0x0286
    0282 2D08      MOV	R16,R8
    0283 2D19      MOV	R17,R9
    0284 2D2A      MOV	R18,R10
    0285 2D3B      MOV	R19,R11
    0286 C013      RJMP	long_div_epilog
long_div_prolog:
    0287 927A      ST	R7,-Y
    0288 928A      ST	R8,-Y
    0289 929A      ST	R9,-Y
    028A 92AA      ST	R10,-Y
    028B 92BA      ST	R11,-Y
    028C 92CA      ST	R12,-Y
    028D 93EA      ST	R30,-Y
    028E 938A      ST	R24,-Y
    028F 939A      ST	R25,-Y
    0290 93AA      ST	R26,-Y
    0291 93BA      ST	R27,-Y
    0292 858B      LDD	R24,Y+11
    0293 859C      LDD	R25,Y+12
    0294 85AD      LDD	R26,Y+13
    0295 85BE      LDD	R27,Y+14
    0296 2EC3      MOV	R12,R19
    0297 F00E      BRTS	0x0299
    0298 26CB      EOR	R12,R27
    0299 9508      RET
long_div_epilog:
    029A FCC7      SBRC	R12,7
    029B D017      RCALL	neg_R16_R19
    029C 91B9      LD	R27,Y+
    029D 91A9      LD	R26,Y+
    029E 9199      LD	R25,Y+
    029F 9189      LD	R24,Y+
    02A0 91E9      LD	R30,Y+
    02A1 90C9      LD	R12,Y+
    02A2 90B9      LD	R11,Y+
    02A3 90A9      LD	R10,Y+
    02A4 9099      LD	R9,Y+
    02A5 9089      LD	R8,Y+
    02A6 9079      LD	R7,Y+
    02A7 9624      ADIW	R28,4
    02A8 9508      RET
tst_R16_R19:
    02A9 2FE0      MOV	R30,R16
    02AA 2BE1      OR	R30,R17
    02AB 2BE2      OR	R30,R18
    02AC 2BE3      OR	R30,R19
    02AD 9508      RET
tst_R24_R27:
    02AE 2FE8      MOV	R30,R24
    02AF 2BE9      OR	R30,R25
    02B0 2BEA      OR	R30,R26
    02B1 2BEB      OR	R30,R27
    02B2 9508      RET
neg_R16_R19:
    02B3 9500      COM	R16
    02B4 9510      COM	R17
    02B5 9520      COM	R18
    02B6 9530      COM	R19
    02B7 5F0F      SUBI	R16,0xFF
    02B8 4F1F      SBCI	R17,0xFF
    02B9 4F2F      SBCI	R18,0xFF
    02BA 4F3F      SBCI	R19,0xFF
    02BB 9508      RET
neg_R24_R27:
    02BC 9580      COM	R24
    02BD 9590      COM	R25
    02BE 95A0      COM	R26
    02BF 95B0      COM	R27
    02C0 5F8F      SUBI	R24,0xFF
    02C1 4F9F      SBCI	R25,0xFF
    02C2 4FAF      SBCI	R26,0xFF
    02C3 4FBF      SBCI	R27,0xFF
    02C4 9508      RET
empy32s:
empy32u:
    02C5 940E031E  CALL	long_prolog
    02C7 927F      PUSH	R7
    02C8 940E0337  CALL	tstzero1
    02CA F139      BEQ	0x02F2
    02CB 2477      CLR	R7
    02CC 940E033D  CALL	tstzero2
    02CE F419      BNE	0x02D2
    02CF 018C      MOVW	R16,R24
    02D0 019D      MOVW	R18,R26
    02D1 C020      RJMP	0x02F2
    02D2 9F08      MUL	R16,R24
    02D3 2CB0      MOV	R11,R0
    02D4 2CA1      MOV	R10,R1
    02D5 9F28      MUL	R18,R24
    02D6 2C90      MOV	R9,R0
    02D7 2C81      MOV	R8,R1
    02D8 9F18      MUL	R17,R24
    02D9 0CA0      ADD	R10,R0
    02DA 1C91      ADC	R9,R1
    02DB 1C87      ADC	R8,R7
    02DC 9F09      MUL	R16,R25
    02DD 0CA0      ADD	R10,R0
    02DE 1C91      ADC	R9,R1
    02DF 1C87      ADC	R8,R7
    02E0 9F19      MUL	R17,R25
    02E1 0C90      ADD	R9,R0
    02E2 1C81      ADC	R8,R1
    02E3 9F0A      MUL	R16,R26
    02E4 0C90      ADD	R9,R0
    02E5 1C81      ADC	R8,R1
    02E6 9F38      MUL	R19,R24
    02E7 0C80      ADD	R8,R0
    02E8 9F29      MUL	R18,R25
    02E9 0C80      ADD	R8,R0
    02EA 9F1A      MUL	R17,R26
    02EB 0C80      ADD	R8,R0
    02EC 9F0B      MUL	R16,R27
    02ED 0C80      ADD	R8,R0
    02EE 2D0B      MOV	R16,R11
    02EF 2D1A      MOV	R17,R10
    02F0 2D29      MOV	R18,R9
    02F1 2D38      MOV	R19,R8
    02F2 907F      POP	R7
    02F3 940C032C  JMP	long_epilog
pop_gset2:
    02F5 E0E2      LDI	R30,2
    02F6 940C02FF  JMP	pop
pop_gset4:
    02F8 E0E8      LDI	R30,0x8
    02F9 940C02FF  JMP	pop
push_gset1:
    02FB 935A      ST	R21,-Y
    02FC 934A      ST	R20,-Y
    02FD 9508      RET
pop_gset1:
    02FE E0E1      LDI	R30,1
pop:
    02FF 9149      LD	R20,Y+
    0300 9159      LD	R21,Y+
    0301 FDE0      SBRC	R30,0
    0302 9508      RET
    0303 9169      LD	R22,Y+
    0304 9179      LD	R23,Y+
    0305 FDE1      SBRC	R30,1
    0306 9508      RET
    0307 90A9      LD	R10,Y+
    0308 90B9      LD	R11,Y+
    0309 FDE2      SBRC	R30,2
    030A 9508      RET
    030B 90C9      LD	R12,Y+
    030C 90D9      LD	R13,Y+
    030D FDE3      SBRC	R30,3
    030E 9508      RET
    030F 90E9      LD	R14,Y+
    0310 90F9      LD	R15,Y+
    0311 9508      RET
push_gset2:
    0312 937A      ST	R23,-Y
    0313 936A      ST	R22,-Y
    0314 940C02FB  JMP	push_gset1
push_gset3:
    0316 92BA      ST	R11,-Y
    0317 92AA      ST	R10,-Y
    0318 940C0312  JMP	push_gset2
push_gset4:
    031A 92DA      ST	R13,-Y
    031B 92CA      ST	R12,-Y
    031C 940C0316  JMP	push_gset3
long_prolog:
    031E 928A      ST	R8,-Y
    031F 929A      ST	R9,-Y
    0320 92AA      ST	R10,-Y
    0321 92BA      ST	R11,-Y
    0322 93EA      ST	R30,-Y
    0323 938A      ST	R24,-Y
    0324 939A      ST	R25,-Y
    0325 93AA      ST	R26,-Y
    0326 93BA      ST	R27,-Y
    0327 8589      LDD	R24,Y+9
    0328 859A      LDD	R25,Y+10
    0329 85AB      LDD	R26,Y+11
    032A 85BC      LDD	R27,Y+12
    032B 9508      RET
long_epilog:
    032C 91B9      LD	R27,Y+
    032D 91A9      LD	R26,Y+
    032E 9199      LD	R25,Y+
    032F 9189      LD	R24,Y+
    0330 91E9      LD	R30,Y+
    0331 90B9      LD	R11,Y+
    0332 90A9      LD	R10,Y+
    0333 9099      LD	R9,Y+
    0334 9089      LD	R8,Y+
    0335 9624      ADIW	R28,4
    0336 9508      RET
tstzero1:
    0337 27EE      CLR	R30
    0338 2BE0      OR	R30,R16
    0339 2BE1      OR	R30,R17
    033A 2BE2      OR	R30,R18
    033B 2BE3      OR	R30,R19
    033C 9508      RET
tstzero2:
    033D 27EE      CLR	R30
    033E 2BE8      OR	R30,R24
    033F 2BE9      OR	R30,R25
    0340 2BEA      OR	R30,R26
    0341 2BEB      OR	R30,R27
    0342 9508      RET

⌨️ 快捷键说明

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