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

📄 rddayinji.lst

📁 ATMAGE128串口荣达微型打印机驱动-查询方式
💻 LST
字号:
__text_start:
__start:
    007B EFCF      LDI	R28,0xFF
    007C E1D0      LDI	R29,0x10
    007D BFCD      OUT	0x3D,R28
    007E BFDE      OUT	0x3E,R29
    007F 51C0      SUBI	R28,0x10
    0080 40D0      SBCI	R29,0
    0081 EA0A      LDI	R16,0xAA
    0082 8308      STD	Y+0,R16
    0083 2400      CLR	R0
    0084 E6EA      LDI	R30,0x6A
    0085 E0F1      LDI	R31,1
    0086 E011      LDI	R17,1
    0087 36EA      CPI	R30,0x6A
    0088 07F1      CPC	R31,R17
    0089 F011      BEQ	0x008C
    008A 9201      ST	R0,Z+
    008B CFFB      RJMP	0x0087
    008C 8300      STD	Z+0,R16
    008D E8EC      LDI	R30,0x8C
    008E E0F0      LDI	R31,0
    008F E0A0      LDI	R26,0
    0090 E0B1      LDI	R27,1
    0091 E010      LDI	R17,0
    0092 3FE6      CPI	R30,0xF6
    0093 07F1      CPC	R31,R17
    0094 F021      BEQ	0x0099
    0095 95C8      LPM
    0096 9631      ADIW	R30,1
    0097 920D      ST	R0,X+
    0098 CFF9      RJMP	0x0092
    0099 940E00D8  CALL	_main
_exit:
    009B CFFF      RJMP	_exit
FILE: C:\DOCUME~1\wangqinbo\MYDOCU~1\avrc\RDdayinji.c
(0001) /***********************************************************/
(0002) //Title:ATMAGE128串口通信程序-查询方式
(0003) //ICC-AVR : 2009-2-22 13:37:40
(0004) // Target : M128
(0005) // Crystal: 8.0000Mhz
(0006) //Author  :borlittle
(0007) //Function:usart0 test
(0008) //备注   :本程序经调试好使
(0009) /***********************************************************/
(0010) #include <iom128v.h>
(0011) #include <macros.h>
(0012) 
(0013) #define uchar unsigned char      //定义无符号字符为 uchar
(0014) #define uint  unsigned int       //定义无符号整型
(0015) #define Crystal 8000000 //晶振8MHZ 
(0016) #define Baud 9600         //波特率
(0017) /***************打印命令**************************************/
(0018) //0x1b,0x38->选择不同点阵汉字点阵,默认0,16*16点阵打印
(0019) //0x0d   ->回车,执行打印
(0020) //0x0e ->横向字符放大2倍
(0021) //0x1b,0x40->打印机初始化	   
(0022) //0x0a ->换行
(0023) //0x1b,0x43,0xn->设置页行数
(0024) //0x0c ->换页
(0025) /*****************************************************/
(0026) 
(0027)  uchar  data1[]={0xd0,0xc2,0xc8,0xd9,0xc8,0xcb};//汉字内码://汉字内码“新荣达”
(0028)  uchar initorder[]={0x1b,0x43,0x08,0x00,0x1b,0x38,0x00,0x00}; //初始化命令,
(0029)  uchar printorder[]={0x0a,0x0d};  //打印命令
(0030)  uchar newline[]={0x0a};//换行设置
(0031)  uchar newpage[]={0x0c,0x1b,0x40,0x00};//换页设置
(0032) 
(0033) 
(0034) //函数声明
(0035) void port_init(void);
(0036) void usart0_init(void);
(0037) void init_devices(void);
(0038) void usart0_char_send(uchar i);
(0039) void usart0_str_send(char *s);
(0040) uchar usart0_char_receive(void);
(0041) 
(0042) /******************端口初始化*******************************/
(0043) void port_init(void) 
(0044) {
(0045)  PORTE = 0xFF;   //设置RXD0和TXD0
_port_init:
    009C EF8F      LDI	R24,0xFF
    009D B983      OUT	0x03,R24
(0046)  DDRE  = 0x02;
    009E E082      LDI	R24,2
    009F B982      OUT	0x02,R24
    00A0 9508      RET
(0047) }
(0048) /*****************串口0初始化*********************************/
(0049) void usart0_init(void) 
(0050) {
(0051)  UCSR0B = 0x00;                     //禁止发送和接收
_usart0_init:
    00A1 2422      CLR	R2
    00A2 B82A      OUT	0x0A,R2
(0052)  UCSR0A = 0x02;                     //倍速异步模式USX0=1
    00A3 E082      LDI	R24,2
    00A4 B98B      OUT	0x0B,R24
(0053)  UCSR0C = 0x06;                     //0000 0110,UCSZ01=1,UCSZ00=1;8位字符,1位停止位 
    00A5 E086      LDI	R24,6
    00A6 93800095  STS	0x95,R24
(0054)  UBRR0L=(Crystal/8/(Baud+1))%256;   //若为正常异步模式USX0=0则位(Crystal/16/(Baud+1))%256
    00A8 E688      LDI	R24,0x68
    00A9 B989      OUT	0x09,R24
(0055)  UBRR0H=(Crystal/8/(Baud+1))/256;   //参见ATMAGE128使用手册
    00AA 92200090  STS	0x90,R2
(0056)  UCSR0B = 0x08;                     //允许发送
    00AC E088      LDI	R24,0x8
    00AD B98A      OUT	0x0A,R24
    00AE 9508      RET
(0057) }
(0058) /******************初始器件**************************************/
(0059) void init_devices(void) 
(0060) {
(0061)  port_init();
_init_devices:
    00AF DFEC      RCALL	_port_init
(0062)  usart0_init();
    00B0 DFF0      RCALL	_usart0_init
    00B1 9508      RET
(0063)  }
(0064) //****************发送一个字符******************************
(0065) void usart0_char_send(uchar i)
(0066) {
(0067) while(!(UCSR0A&(1<<UDRE0)));
_usart0_char_send:
  i                    --> R16
    00B2 9B5D      SBIS	0x0B,5
    00B3 CFFE      RJMP	_usart0_char_send
(0068) UDR0=i;
    00B4 B90C      OUT	0x0C,R16
    00B5 9508      RET
_usart0_str_send:
  s                    --> R20
    00B6 940E0111  CALL	push_gset1
    00B8 01A8      MOVW	R20,R16
(0069) }
(0070) /******************发送一个字符串*************************/
(0071) void usart0_str_send(char *s) 
(0072) {
    00B9 C005      RJMP	0x00BF
(0073)  while(*s)
(0074)  {
(0075)  usart0_char_send(*s); 
    00BA 01FA      MOVW	R30,R20
    00BB 8100      LDD	R16,Z+0
    00BC DFF5      RCALL	_usart0_char_send
(0076)  s++;
    00BD 5F4F      SUBI	R20,0xFF
    00BE 4F5F      SBCI	R21,0xFF
    00BF 01FA      MOVW	R30,R20
    00C0 8020      LDD	R2,Z+0
    00C1 2022      TST	R2
    00C2 F7B9      BNE	0x00BA
    00C3 940E0114  CALL	pop_gset1
    00C5 9508      RET
_usart0_str_sendArray:
  i                    --> R20
  len                  --> R22
  q                    --> R10
    00C6 940E010D  CALL	push_gset3
    00C8 2F62      MOV	R22,R18
    00C9 0158      MOVW	R10,R16
(0077)  }
(0078) }
(0079) /*********************发送一个数组**********************/
(0080) void usart0_str_sendArray(uchar *q,uchar len)
(0081) {
(0082)   uchar i;
(0083)   for(i=0;i<len;i++)  //控制字符个数
    00CA 2744      CLR	R20
    00CB C007      RJMP	0x00D3
(0084)   {
(0085)     usart0_char_send(*q);
    00CC 01F5      MOVW	R30,R10
    00CD 8100      LDD	R16,Z+0
    00CE DFE3      RCALL	_usart0_char_send
(0086)     q++;
    00CF 01C5      MOVW	R24,R10
    00D0 9601      ADIW	R24,1
    00D1 015C      MOVW	R10,R24
    00D2 9543      INC	R20
    00D3 1746      CP	R20,R22
    00D4 F3B8      BCS	0x00CC
    00D5 940E0106  CALL	pop_gset3
    00D7 9508      RET
(0087)   }
(0088) }
(0089) 
(0090) /***************主函数*****************************/
(0091) void main(void)
(0092) {
(0093) init_devices();
_main:
    00D8 DFD6      RCALL	_init_devices
(0094) usart0_str_sendArray(initorder,8);
    00D9 E028      LDI	R18,0x8
    00DA E006      LDI	R16,6
    00DB E011      LDI	R17,1
    00DC DFE9      RCALL	_usart0_str_sendArray
(0095) usart0_str_send("阀状态:正常");
    00DD E50D      LDI	R16,0x5D
    00DE E011      LDI	R17,1
    00DF DFD6      RCALL	_usart0_str_send
(0096) usart0_str_sendArray(newline,1);
    00E0 E021      LDI	R18,1
    00E1 E100      LDI	R16,0x10
    00E2 E011      LDI	R17,1
    00E3 DFE2      RCALL	_usart0_str_sendArray
(0097) usart0_str_send("测试阀编号:12");
    00E4 E40E      LDI	R16,0x4E
    00E5 E011      LDI	R17,1
    00E6 DFCF      RCALL	_usart0_str_send
(0098) usart0_str_sendArray(newline,1);
    00E7 E021      LDI	R18,1
    00E8 E100      LDI	R16,0x10
    00E9 E011      LDI	R17,1
    00EA DFDB      RCALL	_usart0_str_sendArray
(0099) usart0_str_send("测试阀号: 3");
    00EB E401      LDI	R16,0x41
    00EC E011      LDI	R17,1
    00ED DFC8      RCALL	_usart0_str_send
(0100) usart0_str_sendArray(newline,1);
    00EE E021      LDI	R18,1
    00EF E100      LDI	R16,0x10
    00F0 E011      LDI	R17,1
    00F1 DFD4      RCALL	_usart0_str_sendArray
(0101) usart0_str_send("测试者号:223");
    00F2 E303      LDI	R16,0x33
    00F3 E011      LDI	R17,1
    00F4 DFC1      RCALL	_usart0_str_send
(0102) usart0_str_sendArray(newline,1);
    00F5 E021      LDI	R18,1
    00F6 E100      LDI	R16,0x10
    00F7 E011      LDI	R17,1
    00F8 DFCD      RCALL	_usart0_str_sendArray
(0103) usart0_str_send("测试时间:2009年2月24日15:46");
    00F9 E105      LDI	R16,0x15
    00FA E011      LDI	R17,1
    00FB DFBA      RCALL	_usart0_str_send
(0104) usart0_str_sendArray(newline,1);
    00FC E021      LDI	R18,1
    00FD E100      LDI	R16,0x10
    00FE E011      LDI	R17,1
    00FF DFC6      RCALL	_usart0_str_sendArray
(0105) usart0_str_sendArray(newpage,3);
    0100 E023      LDI	R18,3
    0101 E101      LDI	R16,0x11
    0102 E011      LDI	R17,1
    0103 DFC2      RCALL	_usart0_str_sendArray
(0106) while(1);
FILE: <library>
    0104 CFFF      RJMP	0x0104
    0105 9508      RET
pop_gset3:
    0106 E0E4      LDI	R30,4
    0107 940C0115  JMP	pop
push_gset5:
    0109 92FA      ST	R15,-Y
    010A 92EA      ST	R14,-Y
push_gset4:
    010B 92DA      ST	R13,-Y
    010C 92CA      ST	R12,-Y
push_gset3:
    010D 92BA      ST	R11,-Y
    010E 92AA      ST	R10,-Y
push_gset2:
    010F 937A      ST	R23,-Y
    0110 936A      ST	R22,-Y
push_gset1:
    0111 935A      ST	R21,-Y
    0112 934A      ST	R20,-Y
    0113 9508      RET
pop_gset1:
    0114 E0E1      LDI	R30,1
pop:
    0115 9149      LD	R20,Y+
    0116 9159      LD	R21,Y+
    0117 FDE0      SBRC	R30,0
    0118 9508      RET
    0119 9169      LD	R22,Y+
    011A 9179      LD	R23,Y+
    011B FDE1      SBRC	R30,1
    011C 9508      RET
    011D 90A9      LD	R10,Y+
    011E 90B9      LD	R11,Y+
    011F FDE2      SBRC	R30,2
    0120 9508      RET
    0121 90C9      LD	R12,Y+
    0122 90D9      LD	R13,Y+
    0123 FDE3      SBRC	R30,3
    0124 9508      RET
    0125 90E9      LD	R14,Y+
    0126 90F9      LD	R15,Y+
    0127 9508      RET

⌨️ 快捷键说明

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