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

📄 mnj_1335.lst

📁 app_16x4_SED1335_T6963_LCD_demo
💻 LST
📖 第 1 页 / 共 5 页
字号:
__text_start:
__start:
    0CF4 E5CF      LDI	R28,0x5F
    0CF5 E0D4      LDI	R29,4
    0CF6 BFCD      OUT	0x3D,R28
    0CF7 BFDE      OUT	0x3E,R29
    0CF8 52C0      SUBI	R28,0x20
    0CF9 40D0      SBCI	R29,0
    0CFA EA0A      LDI	R16,0xAA
    0CFB 8308      STD	Y+0,R16
    0CFC 2400      CLR	R0
    0CFD E9E3      LDI	R30,0x93
    0CFE E0F1      LDI	R31,1
    0CFF E011      LDI	R17,1
    0D00 39E5      CPI	R30,0x95
    0D01 07F1      CPC	R31,R17
    0D02 F011      BEQ	0x0D05
    0D03 9201      ST	R0,Z+
    0D04 CFFB      RJMP	0x0D00
    0D05 8300      STD	Z+0,R16
    0D06 EBE4      LDI	R30,0xB4
    0D07 E1F8      LDI	R31,0x18
    0D08 E6A0      LDI	R26,0x60
    0D09 E0B0      LDI	R27,0
    0D0A E119      LDI	R17,0x19
    0D0B 3EE7      CPI	R30,0xE7
    0D0C 07F1      CPC	R31,R17
    0D0D F021      BEQ	0x0D12
    0D0E 95C8      LPM
    0D0F 9631      ADIW	R30,1
    0D10 920D      ST	R0,X+
    0D11 CFF9      RJMP	0x0D0B
    0D12 940E119B  CALL	_main
_exit:
    0D14 CFFF      RJMP	_exit
FILE: MNJ_1335.c
(0001) /*-------------------------------------------------------
(0002)              MD-500Ⅱ模拟定位机(ICCAVR)显示程序    2.0
(0003) 	             作者:cyk8          2004.12.3
(0004) 		  1、应包含头文件slavr.h
(0005)           2、在工程选项中的Additional Lib中填入slavr
(0006) 		     使编译器使用附加库文件libslavr.a
(0007) 		  3、数据线D0~D7接PORTC
(0008)               WR------>用PD4代替
(0009)               RD------>用PD3代替
(0010) 			  A0------>用PD6代替
(0011) 			  RESET接RESET
(0012) 	          CS接地
(0013) 		  4,  通讯协议:
(0014) 		        主机发送的控制指令采用6个字符组成的字符串格式“(X/Y/S/C/G/T)”+数据1,数据2,数据3,数据4+“#”,
(0015) 		         主机共发7B,7C,7D,7E,7F,
(0016) 				 a.第一个发的是X,Y,SAD,C,G,TH的ASCⅡ
(0017) 				   X--->58H(X)
(0018) 				   Y--->59H(Y)
(0019) 				   SAD->53H(S)
(0020) 				   C--->43H(C)
(0021) 				   G--->47H(G)
(0022) 				   TH-->54H(T)
(0023) 				 b.7B,7C,7D,7E四个数据
(0024) 				 c.最后一个7F=#23H(ASCⅡ="#"表示结束符号)
(0025) 
(0026) ---------------------------------------------------------*/
(0027) #include<ioM16V.h>
(0028) #include <stdlib.h>
(0029) #include <macros.h>
(0030) #include <slavr.h>
(0031) 
(0032) //宏定义//
(0033) #define	Uchar unsigned char
(0034) #define Uint unsigned int
(0035) #define	paraP9		0x28		// 相对于320 X 240
(0036) #define BasePart1 0x00 
(0037) #define BasePart2 0x40 
(0038) #define BasePart3 0x80 
(0039) #define BasePart4 0x00 
(0040) #define SystemSet 0x40 
(0041) #define Scroll 0x44 
(0042) #define DispOn 0x59 
(0043) #define DispOff 0x58 
(0044) #define Ovlay 0x5b 
(0045) #define HdotScr 0x5a 
(0046) #define CsrForm 0x5d 
(0047) #define CgramAdr 0x5c 
(0048) #define CsrDirR 0x4c 
(0049) #define CsrDirL 0x4d 
(0050) #define CsrDirU 0x4e 
(0051) #define CsrDirD 0x4f 
(0052) #define CsrW 0x46 
(0053) #define CsrR 0x47 
(0054) #define mWrite 0x42 
(0055) #define mRead 0x43 
(0056) #define A0_H PORTD |=0x40
(0057) #define A0_L PORTD &=0xbf
(0058) #define RD_H PORTD |=0x08
(0059) #define WR_H PORTD |=0x10
(0060) #define WR_L PORTD &=0xef
(0061) #define LcmRdataPort A0_H
(0062) #define LcmStatusPort A0_L
(0063) 
(0064) unsigned char RX_data[4]={0};       //串口接收的数据
(0065) unsigned char RX_counter=0;         //串口接收到的字节数计数器
(0066) 
(0067) void UART_init        (void);
(0068) void putchar          (unsigned char c); 
(0069) void puts             (unsigned char *s);
(0070) void UART_rx          (void);
(0071) void delay_nms        (unsigned int n);
(0072) 
(0073) const Uchar  *ptr;   //液晶字符指针变量
(0074) 
(0075) Uchar ParaSysTable8[]= {
(0076) 		0x30,0x87,0x07,0x27,0x42,0xf0,0x28,0x00		  		// P1-P8参数
(0077) 		};
(0078) Uchar ParaScrTableA[]= {
(0079) 		0x00,BasePart1,0xF0,0x00,BasePart2,0xF0,0x00,BasePart3,0x00,BasePart4
(0080) };		
(0081) 		
(0082) void PutCdotInAlpha( Uchar Ox, Uchar Oy, Uchar Cnumber );
(0083) void PutWordInAlpha(void);
(0084) void TextDisp( Uchar Ox,Uchar Oy, const Uchar  *ptr );
(0085) void LcmInition( void ); 
(0086) void LcmClear( void ); 
(0087) void SelfInit( void ); 
(0088) void delay(Uint t);
(0089) void RollLaft( void );
(0090) void Rollright( void );
(0091) void RollDown( void );
(0092) void RollUp( void ); 
(0093) void BuildCgram( Uchar Base, Uchar EndlCode );
(0094) void PutWordInAlpha(void);
(0095) void PutWordInGraph( void );
(0096) void PutWord24InGraph( void ); 
(0097) void Linexy(Uint x0,Uchar y0,Uint xt,Uchar yt,Uchar att);
(0098) void Sample3( void );
(0099) void Point(Uint Px, Uchar Py, Uchar attr );
(0100) 
(0101) 
(0102) 
(0103) 
(0104) /*  微秒级延时函数(mS)  本延时函数实际为delay_us(int time)中的int time=1->实际等于2us */
(0105) void delay_us(int time)
(0106)  {     
(0107)   do
(0108) 	{
(0109) 	time--;
_delay_us:
  time                 --> R16
    0D15 5001      SUBI	R16,1
    0D16 4010      SBCI	R17,0
(0110) 	}	
(0111)   while (time>1);
    0D17 E081      LDI	R24,1
    0D18 E090      LDI	R25,0
    0D19 1780      CP	R24,R16
    0D1A 0791      CPC	R25,R17
    0D1B F3CC      BLT	0x0D15
(0112)  }		  
    0D1C 9508      RET
_delay_ms:
  time                 --> R20
    0D1D 940E11D0  CALL	push_gset1
    0D1F 01A8      MOVW	R20,R16
(0113) 
(0114) /*	    毫秒级延时函数	*/	 
(0115) void delay_ms(unsigned int time)
(0116) 	 {
    0D20 C005      RJMP	0x0D26
(0117) 	  while(time!=0)
(0118) 	  	  {	
(0119) 		   delay_us(500);
    0D21 EF04      LDI	R16,0xF4
    0D22 E011      LDI	R17,1
    0D23 DFF1      RCALL	_delay_us
(0120) 		   time--;
    0D24 5041      SUBI	R20,1
    0D25 4050      SBCI	R21,0
    0D26 3040      CPI	R20,0
    0D27 0745      CPC	R20,R21
    0D28 F7C1      BNE	0x0D21
(0121) 		  }
(0122) 	 }
    0D29 940E11D3  CALL	pop_gset1
    0D2B 9508      RET
(0123) void sed1335_write_command(Uchar commandcode) 
(0124) { 
(0125) PORTC=commandcode; 
_sed1335_write_command:
  commandcode          --> R16
    0D2C BB05      OUT	0x15,R16
(0126) A0_H; 
    0D2D 9A96      SBI	0x12,6
(0127) RD_H;
    0D2E 9A93      SBI	0x12,3
(0128) WR_L;
    0D2F B382      IN	R24,0x12
    0D30 7E8F      ANDI	R24,0xEF
    0D31 BB82      OUT	0x12,R24
(0129) WR_H;
    0D32 9A94      SBI	0x12,4
(0130) } 
    0D33 9508      RET
(0131) 
(0132) void sed1335_write_data(Uchar data) 
(0133) { 
(0134) PORTC=data; 
_sed1335_write_data:
  data                 --> R16
    0D34 BB05      OUT	0x15,R16
(0135) A0_L;
    0D35 B382      IN	R24,0x12
    0D36 7B8F      ANDI	R24,0xBF
    0D37 BB82      OUT	0x12,R24
(0136) RD_H;
    0D38 9A93      SBI	0x12,3
(0137) WR_L;
    0D39 B382      IN	R24,0x12
    0D3A 7E8F      ANDI	R24,0xEF
    0D3B BB82      OUT	0x12,R24
(0138) WR_H;
    0D3C 9A94      SBI	0x12,4
(0139) } 
    0D3D 9508      RET
(0140) //CPU初始化//
(0141) void SelfInit( void ) 
(0142) { 
(0143) DDRA  =0xff;
_SelfInit:
    0D3E EF8F      LDI	R24,0xFF
    0D3F BB8A      OUT	0x1A,R24
(0144) PORTA = 0x00;
    0D40 2422      CLR	R2
    0D41 BA2B      OUT	0x1B,R2
(0145) DDRB  =0xff;
    0D42 BB87      OUT	0x17,R24
(0146) PORTB = 0x00;
    0D43 BA28      OUT	0x18,R2
(0147) DDRC = 0xff; 
    0D44 BB84      OUT	0x14,R24
(0148) PORTC = 0x00;    
    0D45 BA25      OUT	0x15,R2
(0149) DDRD = 0xff; 
    0D46 BB81      OUT	0x11,R24
(0150) PORTD = 0xff; 
    0D47 BB82      OUT	0x12,R24
(0151) 
(0152) } 
    0D48 9508      RET
_LcmInition:
  i1                   --> R20
    0D49 940E11D0  CALL	push_gset1
(0153) //液晶初始化//
(0154) void LcmInition( void ) 
(0155) { 
(0156) Uint i1; 
(0157) delay_ms(50); 
    0D4B E302      LDI	R16,0x32
    0D4C E010      LDI	R17,0
    0D4D DFCF      RCALL	_delay_ms
(0158) delay_ms(50); 
    0D4E E302      LDI	R16,0x32
    0D4F E010      LDI	R17,0
    0D50 DFCC      RCALL	_delay_ms
(0159) sed1335_write_command(SystemSet); 
    0D51 E400      LDI	R16,0x40
    0D52 DFD9      RCALL	_sed1335_write_command
(0160) sed1335_write_data(0x30); 
    0D53 E300      LDI	R16,0x30
    0D54 DFDF      RCALL	_sed1335_write_data
(0161) sed1335_write_data(0x87); 
    0D55 E807      LDI	R16,0x87
    0D56 DFDD      RCALL	_sed1335_write_data
(0162) sed1335_write_data(0x07); 
    0D57 E007      LDI	R16,7
    0D58 DFDB      RCALL	_sed1335_write_data
(0163) sed1335_write_data(0x27); 
    0D59 E207      LDI	R16,0x27
    0D5A DFD9      RCALL	_sed1335_write_data
(0164) sed1335_write_data(0x42); 
    0D5B E402      LDI	R16,0x42
    0D5C DFD7      RCALL	_sed1335_write_data
(0165) sed1335_write_data(0xf0); 
    0D5D EF00      LDI	R16,0xF0
    0D5E DFD5      RCALL	_sed1335_write_data
(0166) sed1335_write_data(0x28); 
    0D5F E208      LDI	R16,0x28
    0D60 DFD3      RCALL	_sed1335_write_data
(0167) sed1335_write_data(0x00); 
    0D61 2700      CLR	R16
    0D62 DFD1      RCALL	_sed1335_write_data
(0168) sed1335_write_command(Scroll); 
    0D63 E404      LDI	R16,0x44
    0D64 DFC7      RCALL	_sed1335_write_command
(0169) sed1335_write_data(0x00); 
    0D65 2700      CLR	R16
    0D66 DFCD      RCALL	_sed1335_write_data
(0170) sed1335_write_data(0x00); 
    0D67 2700      CLR	R16
    0D68 DFCB      RCALL	_sed1335_write_data
(0171) sed1335_write_data(0xf0); 
    0D69 EF00      LDI	R16,0xF0
    0D6A DFC9      RCALL	_sed1335_write_data
(0172) sed1335_write_data(0x00); 
    0D6B 2700      CLR	R16
    0D6C DFC7      RCALL	_sed1335_write_data
(0173) sed1335_write_data(0x40); 
    0D6D E400      LDI	R16,0x40
    0D6E DFC5      RCALL	_sed1335_write_data
(0174) sed1335_write_data(0xf0); 
    0D6F EF00      LDI	R16,0xF0
    0D70 DFC3      RCALL	_sed1335_write_data
(0175) sed1335_write_data(0x00); 
    0D71 2700      CLR	R16
    0D72 DFC1      RCALL	_sed1335_write_data

⌨️ 快捷键说明

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