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

📄 display_dhtxx.s

📁 温湿度检测仪一套
💻 S
📖 第 1 页 / 共 2 页
字号:
	.module Display_DHTXX.c
	.area lit(rom, con, rel)
_LED::
	.byte 64,'y
	.byte 36,48
	.byte 25,18
	.byte 2,'x
	.byte 0,16
	.byte 191,57
	.byte 134,175
	.byte 255
	.dbfile C:\DOCUME~1\Owner\桌面\产品程序文件\DHT21\新显示程序\Display_DHTXX.c
	.dbsym e LED _LED A[15:15]kc
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Owner\桌面\产品程序文件\DHT21\新显示程序\Display_DHTXX.c
_PLAY::
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Owner\桌面\产品程序文件\DHT21\新显示程序\Display_DHTXX.c
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Owner\桌面\产品程序文件\DHT21\新显示程序\Display_DHTXX.c
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Owner\桌面\产品程序文件\DHT21\新显示程序\Display_DHTXX.c
	.dbsym e PLAY _PLAY A[6:6]c
	.area text(rom, con, rel)
	.dbfile C:\DOCUME~1\Owner\桌面\产品程序文件\DHT21\新显示程序\Display_DHTXX.c
	.dbfunc e port_init _port_init fV
	.even
_port_init::
	.dbline -1
	.dbline 113
; //ICC-AVR application builder : 2008-4-28 9:22:37
; // Target : M8
; // Crystal: 8.0000Mhz
; /*************************************************************************
; 程序:6_LED
; 功能:湿度传感器显示板(六个数码管显示)
; 公司:奥松电子
; 芯片:M8
; 晶振:内部 2.0000Mhz
; 创建人:木工
; 创建时间:08.05.05
; 修改人:
; 修改时间:
; 修改原因:
; **************************************************************************/
; 
; #include <iom8v.h>
; #include <macros.h>
; #include <eeprom.h> 
; #include "mu_io.h"
; typedef unsigned char  U8;       /* defined for unsigned 8-bits integer variable 	  无符号8位整型变量  */
; typedef signed   char  S8;       /* defined for signed 8-bits integer variable		  有符号8位整型变量  */
; typedef unsigned int   U16;      /* defined for unsigned 16-bits integer variable 	  无符号16位整型变量 */
; typedef signed   int   S16;      /* defined for signed 16-bits integer variable 	  有符号16位整型变量 */
; typedef unsigned long  U32;      /* defined for unsigned 32-bits integer variable 	  无符号32位整型变量 */
; typedef signed   long  S32;      /* defined for signed 32-bits integer variable 	  有符号32位整型变量 */
; typedef float          F32;      /* single precision floating point variable (32bits) 单精度浮点数(32位长度) */
; typedef double         F64;      /* double precision floating point variable (64bits) 双精度浮点数(64位长度) */
; 
; /**************************************************************************
;                        数码管显示赋值区
; ***************************************************************************/
; #define		_a		0x01
; #define		_b		0x02
; #define		_c		0x04
; #define		_d		0x08
; #define		_e		0x10
; #define		_f		0x20
; #define		_g		0x40   
; #define		_dp		0x80
; 
; #define		num0		_g                     //灭的数码管
; #define		num1		_a|_d|_e|_f|_g
; #define		num2		_c|_f
; #define		num3		_e|_f
; #define		num4		_a|_d|_e
; #define		num5		_b|_e
; #define		num6		_b
; #define		num7		_d|_e|_f|_g
; #define		num8		0x00
; #define		num9		_e
; #define     num_        _a|_b|_c|_d|_e|_f|_dp
; #define     num_11      _a|_d|_e|_f
; #define     num_E       _b|_c|_dp              //13
; #define     num_r       _a|_b|_c|_d|_f|_dp     //14
; #define     num_N       _a|_b|_c|_d|_e|_f|_g|_dp    //15
; 
; 
; 
; 
; 
; #define     dc2         0x04
; #define     dc3         0x08
; #define     dd          0x03                  //数码管控制端口
; #define     dd4         0x10
; #define     dd5         0x20
; #define     dd6         0x40
; #define     dd7         0x80
; #define     dd2         0x04
; #define     dd3         0x08
; 
; #define     led1        dc3                  //使用时要先将数码管全熄灭掉
; #define     led2        dd5
; #define     led3        dd4
; #define     led4        dd7
; #define     led5        dd6
; #define     led6        dd2
; /**************************************************************************
;                     I/O空间定义
; ***************************************************************************/
; // B0_IN	DDRB &= ~(1 << PB0)		/*设置输入*/
; // B0_OUT	DDRB |= (1 << PB0)		/*设置输出*/
; // B0_CLR	PORTB &= ~(1 << PB0)	/*置低电平*/
; // B0_SET	PORTB |= (1 << PB0)		/*置高电平*/
; // B0_R	    PINB & (1 <<PB0)		/*读了电平*/
; /**************************************************************************
;                     通讯I/O空间定义
; ***************************************************************************/
;  #define       COM_IN          C5_IN  
;  #define       COM_OUT         C5_OUT
;  #define       COM_CLR         C5_CLR
;  #define       COM_SET         C5_SET
;  #define       COM_R           C5_R
;  
; /**************************************************************************
;                     全局变量定义区
; ***************************************************************************/
; U8       i;
; //U16 
; //RM      为临时变量 在RC测电阻中使用      
; const U8 LED[ ]={num0,num1,num2,num3,num4,num5,num6,num7,num8,num9,num_,num_11,num_E,num_r,num_N };       //数码管笔形码数组
;       U8 PLAY[6]={0,0,0,0,0,0};                                             //这个数组放在SARM里
;       U8    U8FLAG,k;
;       U8    U8count,U8temp;
;       U8    U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;
;       U8    U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;
;       U8    U8comdata;
;       U16   ReceiveHighByte;
;       U16   ReceiveLowByte;
; /**************************************************************************
; ***************************************************************************/
; void port_init(void)
; {
	.dbline 114
;  PORTB = 0x00;
	clr R2
	out 0x18,R2
	.dbline 115
;  DDRB  = 0xFF;
	ldi R24,255
	out 0x17,R24
	.dbline 116
;  PORTC = 0x03;                      //m103 output only
	ldi R24,3
	out 0x15,R24
	.dbline 117
;  DDRC  = 0x0C;
	ldi R24,12
	out 0x14,R24
	.dbline 118
;  PORTD = 0x00;
	out 0x12,R2
	.dbline 119
;  DDRD  = 0xF0;
	ldi R24,240
	out 0x11,R24
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e watchdog_init _watchdog_init fV
	.even
_watchdog_init::
	.dbline -1
	.dbline 123
; }
; 
; void watchdog_init(void)
; {
	.dbline -2
L2:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e init_devices _init_devices fV
;              i -> <dead>
	.even
_init_devices::
	.dbline -1
	.dbline 130
;   //WDR();        //this prevents a timout on enabling
;   //WDTCR = 0x0F; //WATCHDOG ENABLED - dont forget to issue WDRs
; }
; 
; 
; void init_devices(void) 
; {
	.dbline 132
; unsigned char i;
; 		   CLI();                       //disable all interrupts
	cli
	.dbline 133
;      port_init();
	rcall _port_init
	.dbline 134
;  watchdog_init();
	rcall _watchdog_init
	.dbline 136
;  
;     MCUCR = 0x03;
	ldi R24,3
	out 0x35,R24
	.dbline 137
;     GICR  = 0x00;                //关外部中断0
	clr R2
	out 0x3b,R2
	.dbline 138
;     TIMSK = 0x00;                //关定时器1中断
	out 0x39,R2
	.dbline 139
;            SEI();                //re-enable interrupts
	sei
	.dbline -2
L3:
	.dbline 0 ; func end
	ret
	.dbsym l i 1 c
	.dbend
	.dbfunc e Delay _Delay fV
;              i -> R16,R17
	.even
_Delay::
	.dbline -1
	.dbline 144
;                            
; }
; 
; void Delay(unsigned int i)
; {
L5:
	.dbline 145
L6:
	.dbline 145
; 	while(i--);
	movw R2,R16
	subi R16,1
	sbci R17,0
	tst R2
	brne L5
	tst R3
	brne L5
X0:
	.dbline -2
L4:
	.dbline 0 ; func end
	ret
	.dbsym r i 16 i
	.dbend
	.dbfunc e DelayNS _DelayNS fV
;              i -> R20,R21
;            dly -> R16,R17
	.even
_DelayNS::
	rcall push_gset1
	.dbline -1
	.dbline 148
; }
; void DelayNS (U16 dly)                     //延时子程序    1.010ms
; {
	.dbline 150
	rjmp L12
L9:
	.dbline 150
	wdr
L10:
	.dbline 150
	subi R16,1
	sbci R17,0
L12:
	.dbline 150
; 	U16 i;
; 	for ( ; dly>0; dly--)WDR();
	cpi R16,0
	cpc R16,R17
	brne L9
X1:
	.dbline 151
	clr R20
	clr R21
	rjmp L16
L13:
	.dbline 151
L14:
	.dbline 151
	subi R20,255  ; offset = 1
	sbci R21,255
L16:
	.dbline 151
; 		for (i=0; i<1131; i++);           //1131
	cpi R20,107
	ldi R30,4
	cpc R21,R30
	brlo L13
	.dbline -2
L8:
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 i
	.dbsym r dly 16 i
	.dbend
	.dbfunc e DelaymS _DelaymS fV
;              i -> R20,R21
;            dly -> R16,R17
	.even
_DelaymS::
	rcall push_gset1
	.dbline -1
	.dbline 154
; }
; void DelaymS (U16 dly)                     //延时子程序    1.010ms
; {
	.dbline 156
; 	U16 i;
; 	for ( ; dly>0; dly--)
	rjmp L21
L18:
	.dbline 157
; 	{
	.dbline 158
; 	    WDR();
	wdr
	.dbline 159
	clr R20
	clr R21
	rjmp L25
L22:
	.dbline 159
L23:
	.dbline 159
	subi R20,255  ; offset = 1
	sbci R21,255
L25:
	.dbline 159
	cpi R20,24
	ldi R30,1
	cpc R21,R30
	brlo L22
	.dbline 160
L19:
	.dbline 156
	subi R16,1
	sbci R17,0
L21:
	.dbline 156
	cpi R16,0
	cpc R16,R17
	brne L18
X2:
	.dbline -2
L17:
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 i
	.dbsym r dly 16 i
	.dbend
	.dbfunc e Display _Display fV
	.even
_Display::
	rcall push_gset5
	.dbline -1
	.dbline 163
; 		for (i=0; i<280; i++);           //1131
; 	}
; }
; void Display (void)
; {
	.dbline 165
; 
; for(i=0;i<=5;i++)
	clr R2
	sts _i,R2
	rjmp L30
L27:
	.dbline 166
;  {
	.dbline 167
;  DDRD |= 0XFC;
	in R24,0x11
	ori R24,252
	out 0x11,R24
	.dbline 168
;  PORTD&=0x03;
	in R24,0x12
	andi R24,3
	out 0x12,R24
	.dbline 169
;  DDRC |= 0X0C;
	in R24,0x14
	ori R24,12
	out 0x14,R24
	.dbline 170
;  PORTC&=0xF3;
	in R24,0x15
	andi R24,243
	out 0x15,R24
	.dbline 171
;  Delay(1);
	ldi R16,1
	ldi R17,0
	rcall _Delay
	.dbline 173
;  
;  switch(i)
	lds R20,_i
	clr R21
	cpi R20,0
	cpc R20,R21
	breq L34
X3:
	cpi R20,1
	ldi R30,0
	cpc R21,R30
	breq L35
	cpi R20,2
	ldi R30,0
	cpc R21,R30
	breq L36
	cpi R20,3
	ldi R30,0
	cpc R21,R30
	breq L37
	cpi R20,4
	ldi R30,0
	cpc R21,R30
	breq L38
	cpi R20,5
	ldi R30,0
	cpc R21,R30
	breq L39
	rjmp L32
X4:
	.dbline 174
;  {
L34:
	.dbline 175
;  case 0: PORTC|=led1;break;
	sbi 0x15,3
	.dbline 175
	rjmp L32
L35:
	.dbline 176
;  case 1: PORTD|=led2;break;
	sbi 0x12,5
	.dbline 176
	rjmp L32
L36:
	.dbline 177
;  case 2: PORTD|=led3;break;
	sbi 0x12,4
	.dbline 177
	rjmp L32
L37:
	.dbline 178
;  case 3: PORTD|=led4;break;
	sbi 0x12,7
	.dbline 178
	rjmp L32
L38:
	.dbline 179
;  case 4: PORTD|=led5;break;
	sbi 0x12,6
	.dbline 179
	rjmp L32
L39:
	.dbline 180
;  case 5: PORTD|=led6;break;
	sbi 0x12,2
	.dbline 180
	.dbline 181
;  default :break;
L32:
	.dbline 183
;  }
;  PORTB=LED[PLAY[i]] ;         //送数据 
	ldi R24,<_PLAY
	ldi R25,>_PLAY
	lds R30,_i
	clr R31
	add R30,R24
	adc R31,R25
	ldd R30,z+0
	clr R31
	ldi R24,<_LED
	ldi R25,>_LED
	add R30,R24
	adc R31,R25
	lpm R30,Z
	out 0x18,R30
	.dbline 184
;  if((i==0)|(i==2)|(i==3)|(i==5))
	lds R2,_i
	tst R2
	brne L42
	ldi R24,1
	ldi R25,0
	movw R14,R24
	rjmp L43
L42:
	clr R14
	clr R15
L43:
	lds R24,_i
	cpi R24,2
	brne L44
	ldi R24,1
	ldi R25,0
	movw R12,R24
	rjmp L45
L44:
	clr R12
	clr R13
L45:
	lds R24,_i
	cpi R24,3
	brne L46
	ldi R24,1
	ldi R25,0
	movw R10,R24
	rjmp L47
L46:
	clr R10
	clr R11
L47:
	lds R24,_i
	cpi R24,5
	brne L48
	ldi R22,1
	ldi R23,0
	rjmp L49
L48:
	clr R22
	clr R23
L49:
	movw R2,R14
	or R2,R12
	or R3,R13
	or R2,R10
	or R3,R11
	or R2,R22
	or R3,R23
	tst R2
	brne X5
	tst R3
	breq L40
X5:
	.dbline 185
;  {
	.dbline 186
;  PORTB|=0x80;
	sbi 0x18,7
	.dbline 187
;  }
L40:
	.dbline 188
	ldi R16,1
	ldi R17,0
	rcall _DelaymS
	.dbline 189
L28:
	.dbline 165
	lds R24,_i
	subi R24,255    ; addi 1
	sts _i,R24
L30:
	.dbline 165
	ldi R24,5
	lds R2,_i
	cp R24,R2
	brlo X6
	rjmp L27
X6:
	.dbline 190
;  DelaymS(1);
;  }
;  PORTD&=0x03;
	in R24,0x12
	andi R24,3
	out 0x12,R24
	.dbline 191
;  PORTC&=0xF3;
	in R24,0x15
	andi R24,243
	out 0x15,R24
	.dbline -2
L26:
	rcall pop_gset5
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e delay1N _delay1N fV
;         Dcount -> R16,R17
	.even
_delay1N::
	.dbline -1
	.dbline 195
; }
; 
; void delay1N(unsigned int Dcount)  //(1u*Dcount)
; {
	rjmp L52
L51:
	.dbline 197
	.dbline 198
	nop
	.dbline 199
	nop
	.dbline 200
	nop
	.dbline 201
L52:
	.dbline 196
;   while(Dcount--)
	movw R2,R16
	subi R16,1
	sbci R17,0
	tst R2
	brne L51
	tst R3
	brne L51
X7:
	.dbline -2
L50:
	.dbline 0 ; func end
	ret
	.dbsym r Dcount 16 i
	.dbend
	.dbfunc e Delay_10us _Delay_10us fV
;              i -> R16
	.even
_Delay_10us::
	.dbline -1
	.dbline 205
;   {
;    NOP();
;    NOP();
;    NOP();
;   }
; }
; 
;        void  Delay_10us(void)
;       {
	.dbline 207
;         U8 i;                       //2M时延时为   10us
;         i--;
	dec R16
	.dbline 208
;         i--;
	dec R16
	.dbline 209
;         i--;
	dec R16
	.dbline 210
;         i--;
	dec R16
	.dbline 211
;         i--;
	dec R16
	.dbline 212
;         i--;
	dec R16
	.dbline 213
; 		i--;
	dec R16
	.dbline 214
;         i--;
	dec R16
	.dbline 215
;         i--;
	dec R16
	.dbline 216
;         i--;
	dec R16
	.dbline 217
;         i--;
	dec R16
	.dbline 218
;         i--;
	dec R16
	.dbline 219
; 		i--;
	dec R16
	.dbline -2
L54:
	.dbline 0 ; func end
	ret
	.dbsym r i 16 c
	.dbend
	.dbfunc e COM _COM fV
;              i -> R20
	.even
_COM::
	rcall push_gset1
	.dbline -1
	.dbline 224
;       
;        }
; 	
;         void  COM(void)
;       {
	.dbline 227
;      
; 	        U8 i;
;        for(i=0;i<8;i++)	   
	clr R20
	rjmp L59
L56:
	.dbline 228
; 	    {
	.dbline 230
; 		
; 	   	    U8FLAG=2;
	ldi R24,2
	sts _U8FLAG,R24
L60:
	.dbline 233
L61:
	.dbline 233
; 	
; 	   	//while((!P2_0)&&U8FLAG++);
; 	   	while((!(COM_R))&&U8FLAG++);
	sbic 0x13,5
	rjmp L63
	lds R2,_U8FLAG
	clr R3
	mov R24,R2
	subi R24,255    ; addi 1
	sts _U8FLAG,R24
	tst R2
	brne L60
L63:
	.dbline 234
; 		 if(U8FLAG==1)break;
	lds R24,_U8FLAG
	cpi R24,1
	brne L64
	.dbline 234
	rjmp L58
L64:
	.dbline 235
; 			Delay_10us();
	rcall _Delay_10us
	.dbline 236
; 			Delay_10us();
	rcall _Delay_10us
	.dbline 237
; 		    Delay_10us();
	rcall _Delay_10us
	.dbline 238
; 	  		U8temp=0;
	clr R2
	sts _U8temp,R2
	.dbline 240
; 	     //if(P2_0)U8temp=1;
; 	     if(COM_R)U8temp=1;
	sbis 0x13,5
	rjmp L66
	.dbline 240
	ldi R24,1
	sts _U8temp,R24
L66:
	.dbline 241
; 		    U8FLAG=2;
	ldi R24,2
	sts _U8FLAG,R24
L68:
	.dbline 243
L69:
	.dbline 243
; 		 //while((P2_0)&&U8FLAG++);
; 		   while((COM_R)&&U8FLAG++);
	sbis 0x13,5

⌨️ 快捷键说明

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