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

📄 12864串口显示.lst

📁 数显温度万年历
💻 LST
📖 第 1 页 / 共 3 页
字号:
__text_start:
__start:
    00EB E5CF      LDI	R28,0x5F
    00EC E0D4      LDI	R29,4
    00ED BFCD      OUT	0x3D,R28
    00EE BFDE      OUT	0x3E,R29
    00EF 51C0      SUBI	R28,0x10
    00F0 40D0      SBCI	R29,0
    00F1 EA0A      LDI	R16,0xAA
    00F2 8308      STD	Y+0,R16
    00F3 2400      CLR	R0
    00F4 EFE5      LDI	R30,0xF5
    00F5 E0F1      LDI	R31,1
    00F6 E011      LDI	R17,1
    00F7 3FE6      CPI	R30,0xF6
    00F8 07F1      CPC	R31,R17
    00F9 F011      BEQ	0x00FC
    00FA 9201      ST	R0,Z+
    00FB CFFB      RJMP	0x00F7
    00FC 8300      STD	Z+0,R16
    00FD E4E0      LDI	R30,0x40
    00FE E0F0      LDI	R31,0
    00FF E6A0      LDI	R26,0x60
    0100 E0B0      LDI	R27,0
    0101 E011      LDI	R17,1
    0102 3DE5      CPI	R30,0xD5
    0103 07F1      CPC	R31,R17
    0104 F021      BEQ	0x0109
    0105 95C8      LPM
    0106 9631      ADIW	R30,1
    0107 920D      ST	R0,X+
    0108 CFF9      RJMP	0x0102
    0109 D615      RCALL	_main
_exit:
    010A CFFF      RJMP	_exit
FILE: C:\DOCUME~1\Administrator\桌面\16实验\串口显示0\12864_chuankou_drive.h
(0001) #include<iom8v.h>
(0002) #include<macros.h>
(0003) #define uchar unsigned char
(0004) #define uint unsigned int
(0005) #define CS_0 PORTD&=~(1<<PDD4)                                         //片选RS
(0006) #define CS_1 PORTD|=(1<<PD4)
(0007) #define SID_0 PORTD&=~(1<<PD5)                                         //数据 RW
(0008) #define SID_1 PORTD|=(1<<PD5)                       
(0009) #define SCLK_0 PORTD&=~(1<<PD6)                                        //时钟 E
(0010) #define SCLK_1 PORTD|=(1<<PD6)
(0011) #define RST_0 PORTD&=~(1<<PD7)                                         //复位  RST
(0012) #define RST_1 PORTD|=(1<<PD7)            
(0013) /**********************函数声明***************************************/
(0014) void delay_us(int t);
(0015) void delay_ms(unsigned int t);
(0016) void send_byte(uchar bbyte);
(0017) void lcd_wcmd(uchar cmd);
(0018) void lcd_wdat(uchar dat);
(0019) //*******************延时 us 8****************************************
(0020) void delay_us(int t)
(0021) {
(0022) do
(0023)    t--;
_delay_us:
  t                    --> R16
    010B 5001      SUBI	R16,1
    010C 4010      SBCI	R17,0
(0024) while(t>1);
    010D E081      LDI	R24,1
    010E E090      LDI	R25,0
    010F 1780      CP	R24,R16
    0110 0791      CPC	R25,R17
    0111 F3CC      BLT	0x010B
    0112 9508      RET
_delay_ms:
  t                    --> R20
    0113 D6FD      RCALL	push_gset1
    0114 01A8      MOVW	R20,R16
(0025) }
(0026) //*******************延时  ms *****************************************
(0027) void delay_ms(unsigned int t)
(0028) {
    0115 C005      RJMP	0x011B
(0029) while(t!=0)
(0030) {
(0031) delay_us(1142);
    0116 E706      LDI	R16,0x76
    0117 E014      LDI	R17,4
    0118 DFF2      RCALL	_delay_us
(0032) t--;}
    0119 5041      SUBI	R20,1
    011A 4050      SBCI	R21,0
    011B 3040      CPI	R20,0
    011C 0745      CPC	R20,R21
    011D F7C1      BNE	0x0116
    011E D6F5      RCALL	pop_gset1
    011F 9508      RET
_send_byte:
  i                    --> R20
  bbyte                --> R16
    0120 D6F0      RCALL	push_gset1
(0033) }
(0034) /*********************发送1字节函数****************************/
(0035) void send_byte(uchar bbyte)
(0036) {
(0037)     uchar i;
(0038) 	for(i=0;i<8;i++)
    0121 2744      CLR	R20
    0122 C009      RJMP	0x012C
(0039) 	{
(0040)         if(bbyte&0X80)
    0123 FF07      SBRS	R16,7
    0124 C002      RJMP	0x0127
(0041) 		    {SID_1;}
    0125 9A95      SBI	0x12,5
    0126 C001      RJMP	0x0128
(0042) 		else 
(0043) 			{SID_0;}
    0127 9895      CBI	0x12,5
(0044) 		SCLK_1;
    0128 9A96      SBI	0x12,6
(0045) 		SCLK_0;
    0129 9896      CBI	0x12,6
(0046) 		bbyte<<=1;	
    012A 0F00      LSL	R16
    012B 9543      INC	R20
    012C 3048      CPI	R20,0x8
    012D F3A8      BCS	0x0123
    012E D6E5      RCALL	pop_gset1
    012F 9508      RET
_lcd_wcmd:
  Ldata                --> R20
  Hdata                --> R22
  star_data            --> R10
  cmd                  --> R20
    0130 D6FA      RCALL	push_gset3
    0131 2F40      MOV	R20,R16
(0047) 	}
(0048) }
(0049) /************************写命令函数**********************************/
(0050) void lcd_wcmd(uchar cmd)
(0051) {
(0052)     uchar star_data,Hdata,Ldata;
(0053) 	star_data=0XF8;
    0132 EF88      LDI	R24,0xF8
    0133 2EA8      MOV	R10,R24
(0054) 	Hdata=cmd&0XF0;
    0134 2F64      MOV	R22,R20
    0135 7F60      ANDI	R22,0xF0
(0055) 	Ldata=(cmd<<4)&0XF0;
    0136 2F84      MOV	R24,R20
    0137 708F      ANDI	R24,0xF
    0138 9582      SWAP	R24
    0139 7F80      ANDI	R24,0xF0
    013A 2F48      MOV	R20,R24
(0056) 	send_byte(star_data);
    013B 2D0A      MOV	R16,R10
    013C DFE3      RCALL	_send_byte
(0057) 	delay_us(1);
    013D E001      LDI	R16,1
    013E E010      LDI	R17,0
    013F DFCB      RCALL	_delay_us
(0058) 	send_byte(Hdata);
    0140 2F06      MOV	R16,R22
    0141 DFDE      RCALL	_send_byte
(0059) 	delay_us(1);
    0142 E001      LDI	R16,1
    0143 E010      LDI	R17,0
    0144 DFC6      RCALL	_delay_us
(0060)     send_byte(Ldata);
    0145 2F04      MOV	R16,R20
    0146 DFD9      RCALL	_send_byte
(0061) 	delay_us(1);
    0147 E001      LDI	R16,1
    0148 E010      LDI	R17,0
    0149 DFC1      RCALL	_delay_us
    014A D6C0      RCALL	pop_gset3
    014B 9508      RET
_lcd_wdat:
  Ldata                --> R20
  Hdata                --> R22
  star_data            --> R10
  dat                  --> R20
    014C D6DE      RCALL	push_gset3
    014D 2F40      MOV	R20,R16
(0062) }
(0063) /**************************写数据函数***************************************/
(0064) void lcd_wdat(uchar dat)
(0065) {
(0066)     uchar star_data,Hdata,Ldata;
(0067) 	star_data=0XFA;
    014E EF8A      LDI	R24,0xFA
    014F 2EA8      MOV	R10,R24
(0068) 	Hdata=dat&0XF0;
    0150 2F64      MOV	R22,R20
    0151 7F60      ANDI	R22,0xF0
(0069) 	Ldata=(dat<<4)&0XF0;
    0152 2F84      MOV	R24,R20
    0153 708F      ANDI	R24,0xF
    0154 9582      SWAP	R24
    0155 7F80      ANDI	R24,0xF0
    0156 2F48      MOV	R20,R24
(0070) 	send_byte(star_data);
    0157 2D0A      MOV	R16,R10
    0158 DFC7      RCALL	_send_byte
(0071) 	delay_us(1);
    0159 E001      LDI	R16,1
    015A E010      LDI	R17,0
    015B DFAF      RCALL	_delay_us
(0072) 	send_byte(Hdata);
    015C 2F06      MOV	R16,R22
    015D DFC2      RCALL	_send_byte
(0073) 	delay_us(1);
    015E E001      LDI	R16,1
    015F E010      LDI	R17,0
    0160 DFAA      RCALL	_delay_us
(0074)     send_byte(Ldata);
    0161 2F04      MOV	R16,R20
    0162 DFBD      RCALL	_send_byte
(0075) 	delay_us(1);
    0163 E001      LDI	R16,1
    0164 E010      LDI	R17,0
    0165 DFA5      RCALL	_delay_us
    0166 D6A4      RCALL	pop_gset3
    0167 9508      RET
(0076) 	
(0077) }
(0078) /**************************初始化函数*************************************/
(0079) void lcd_init(void)
(0080) {
(0081)     //PSB_0;
(0082) 	RST_0;
_lcd_init:
    0168 9897      CBI	0x12,7
(0083) 	delay_ms(3);
    0169 E003      LDI	R16,3
    016A E010      LDI	R17,0
    016B DFA7      RCALL	_delay_ms
(0084)     RST_1;
    016C 9A97      SBI	0x12,7
(0085) 	delay_ms(3);
    016D E003      LDI	R16,3
    016E E010      LDI	R17,0
    016F DFA3      RCALL	_delay_ms
(0086) 	CS_1;
    0170 9A94      SBI	0x12,4
(0087) 	lcd_wcmd(0X34);
    0171 E304      LDI	R16,0x34
    0172 DFBD      RCALL	_lcd_wcmd
(0088) 	delay_ms(5);
    0173 E005      LDI	R16,5
    0174 E010      LDI	R17,0
    0175 DF9D      RCALL	_delay_ms
(0089) 	lcd_wcmd(0X30);
    0176 E300      LDI	R16,0x30
    0177 DFB8      RCALL	_lcd_wcmd
(0090) 	delay_ms(5);
    0178 E005      LDI	R16,5
    0179 E010      LDI	R17,0
    017A DF98      RCALL	_delay_ms
(0091) 	lcd_wcmd(0X0C);
    017B E00C      LDI	R16,0xC
    017C DFB3      RCALL	_lcd_wcmd
(0092) 	delay_ms(5);
    017D E005      LDI	R16,5
    017E E010      LDI	R17,0
    017F DF93      RCALL	_delay_ms
(0093) 	lcd_wcmd(0X01);
    0180 E001      LDI	R16,1
    0181 DFAE      RCALL	_lcd_wcmd
(0094) 	delay_ms(5);
    0182 E005      LDI	R16,5
    0183 E010      LDI	R17,0
    0184 DF8E      RCALL	_delay_ms
    0185 9508      RET
(0095) 	
(0096) }
(0097) /********************清屏*********************/
(0098) void lcd_clr(void)
(0099) {
(0100)     lcd_wcmd(0X01);
_lcd_clr:
    0186 E001      LDI	R16,1
    0187 DFA8      RCALL	_lcd_wcmd
(0101) 	delay_ms(5);
    0188 E005      LDI	R16,5
    0189 E010      LDI	R17,0
    018A DF88      RCALL	_delay_ms
    018B 9508      RET
_locatexy:
  y                    --> R22
  x                    --> R20
    018C D69B      RCALL	push_gset2
    018D 2F62      MOV	R22,R18
    018E 2F40      MOV	R20,R16
(0102) }
(0103) /********************位置定义***********************/
(0104) void locatexy(uchar x,uchar y)
(0105) {
(0106)     if(y==0){lcd_wcmd(0X80+x);}
    018F 2366      TST	R22
    0190 F421      BNE	0x0195
    0191 2F04      MOV	R16,R20
    0192 5800      SUBI	R16,0x80
    0193 DF9C      RCALL	_lcd_wcmd
    0194 C011      RJMP	0x01A6
(0107) 	else if(y==1){lcd_wcmd(0X90+x);}
    0195 3061      CPI	R22,1
    0196 F421      BNE	0x019B
    0197 2F04      MOV	R16,R20
    0198 5700      SUBI	R16,0x70
    0199 DF96      RCALL	_lcd_wcmd
    019A C00B      RJMP	0x01A6
(0108) 	else if(y==2){lcd_wcmd(0X88+x);}
    019B 3062      CPI	R22,2
    019C F421      BNE	0x01A1
    019D 2F04      MOV	R16,R20
    019E 5708      SUBI	R16,0x78
    019F DF90      RCALL	_lcd_wcmd
    01A0 C005      RJMP	0x01A6
(0109) 	else if(y==3){lcd_wcmd(0X98+x);}
    01A1 3063      CPI	R22,3
    01A2 F419      BNE	0x01A6
    01A3 2F04      MOV	R16,R20
    01A4 5608      SUBI	R16,0x68
    01A5 DF8A      RCALL	_lcd_wcmd
    01A6 D662      RCALL	pop_gset2
    01A7 9508      RET
_lcd_write_str:
  s                    --> R20
  y                    --> R10
  x                    --> R22
    01A8 D682      RCALL	push_gset3
    01A9 2EA2      MOV	R10,R18
    01AA 2F60      MOV	R22,R16
    01AB 814E      LDD	R20,Y+6
    01AC 815F      LDD	R21,Y+7
(0110) }
(0111) /********************显示内容***********************/
(0112) void lcd_write_str(uchar x,uchar y,uchar *s)
(0113) {
(0114)     locatexy(x,y);
    01AD 2D2A      MOV	R18,R10
    01AE 2F06      MOV	R16,R22
    01AF DFDC      RCALL	_locatexy
    01B0 C005      RJMP	0x01B6
(0115) 	while(*s)
(0116) 	{
(0117) 	    lcd_wdat(*s);
    01B1 01FA      MOVW	R30,R20
    01B2 8100      LDD	R16,Z+0
    01B3 DF98      RCALL	_lcd_wdat
(0118) 		s++;
    01B4 5F4F      SUBI	R20,0xFF
    01B5 4F5F      SBCI	R21,0xFF
    01B6 01FA      MOVW	R30,R20
    01B7 8020      LDD	R2,Z+0
    01B8 2022      TST	R2
    01B9 F7B9      BNE	0x01B1
    01BA D650      RCALL	pop_gset3
    01BB 9508      RET
FILE: C:\DOCUME~1\Administrator\桌面\16实验\串口显示0\DS18B20_drive.h
(0001) /*********************************************************************
(0002) 返回三个值dis_buf_18b20[0]小数dis_buf_18b20[1]个位dis_buf_18b20[2]十位
(0003) 调用Read_1820_temperature();
(0004) **********************************************************************/
(0005) #include <iom8v.h>
(0006) #include <macros.h>

⌨️ 快捷键说明

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