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

📄 display_led.lst

📁 AVR开发板例子源代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
__start:
__text_start:
    0145 E5CF      LDI	R28,0x5F
    0146 E0D2      LDI	R29,2
    0147 BFCD      OUT	0x3D,R28
    0148 BFDE      OUT	0x3E,R29
    0149 51C0      SUBI	R28,0x10
    014A 40D0      SBCI	R29,0
    014B EA0A      LDI	R16,0xAA
    014C 8308      STD	Y+0,R16
    014D 2400      CLR	R0
    014E E6E0      LDI	R30,0x60
    014F E0F0      LDI	R31,0
    0150 E010      LDI	R17,0
    0151 36E0      CPI	R30,0x60
    0152 07F1      CPC	R31,R17
    0153 F011      BEQ	0x0156
    0154 9201      ST	R0,Z+
    0155 CFFB      RJMP	0x0151
    0156 8300      STD	Z+0,R16
    0157 E8EA      LDI	R30,0x8A
    0158 E0F2      LDI	R31,2
    0159 E6A0      LDI	R26,0x60
    015A E0B0      LDI	R27,0
    015B E012      LDI	R17,2
    015C 38EA      CPI	R30,0x8A
    015D 07F1      CPC	R31,R17
    015E F021      BEQ	0x0163
    015F 95C8      LPM
    0160 9631      ADIW	R30,1
    0161 920D      ST	R0,X+
    0162 CFF9      RJMP	0x015C
    0163 D07A      RCALL	_main
_exit:
    0164 CFFF      RJMP	_exit
_DelaymS:
  j                    --> R20
  i                    --> R16
    0165 D0A0      RCALL	push_gset1
FILE: E:\iccavr代码\实验18_扩展板点阵汉字LED显示\display_led.c
(0001) //******************************************************************************
(0002) //                                                                             *
(0003) //    FileName   : 扩展板ledspi.c                ICCAVR V6.31A编译             *
(0004) //    Function   : 高档LED显示屏,滚动显示一个数组                             *
(0005) //    Date       : 2006-11-24                                                  *
(0006) //    Version    : 1.0                                                         *
(0007) //                                                                             *
(0008) //    Author     : 开关电源              hongtusy@163.com                      *
(0009) //    Company    : 电子信息技术资源网    http://www.itsn.cn                    *
(0010) //                                                                             *
(0011) /***************************描述与记事******************************************
(0012) 扩展实验板的AVR程序,使用595驱动点阵汉字LED的练习。
(0013) 记事:本程序旨在对汉字LED驱动的理解与演示,程序适合初学者使用。
(0014) 描述:74HC595是串行输入,并行输出带锁存器的有较大驱动能力的芯片。驱动电流可达70mA。内部有移位和输出两个寄存器。
(0015) 在SRCLK串行时钟上升沿,数据经SER移位进入,或经QH’输出。在RCLK上升沿,数据进入并行输出寄存器。
(0016) SRCLK’和OE’分别是复位和允许输出控制,分别接电源和地。
(0017) 除了系统复位SW3-8外其余平拨开关需要关闭
(0018) 接线定义:PD4=数据,PD5=RCLK并行输出时钟,PD6=SRCLK串行时钟,PD7=OE,PD0=A,PD1=B,PD2=C,PD3=D
(0019) //******************************************************************************/
(0020) 
(0021) #include <iom8535v.h>             //头文件,使用ATmega8535单片机
(0022) #include <macros.h>               //包含一些常用的宏定义,如NOP(),SEI()等。
(0023) 
(0024) typedef unsigned char uchar;      //数据类型说明,无符号整型,两字节大小。
(0025) typedef unsigned int uint;        //数据类型说明,无符号字符型,单字节大小。
(0026) 
(0027) //使用片内1MHz晶体,可更换。
(0028) 
(0029) #pragma data: code     
(0030) 
(0031) //欢迎 ,先上后下,先左后右取码,每字32个字节 ,此表格存储在程序存储器中
(0032) const uchar buf[608]={
(0033)                0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0034) 			   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0035) 			   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  //空
(0036) 			   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0037) 			   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0038) 			   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  //空
(0039)                0x28,0x04,0x24,0x08,0x22,0x32,0x21,0xC2,0x26,0xC2,0x38,0x34,
(0040)                0x04,0x04,0x18,0x08,0xF0,0x30,0x17,0xC0,0x10,0x60,0x10,0x18,
(0041) 			   0x14,0x0C,0x18,0x06,0x10,0x04,0x00,0x00,  //欢
(0042) 			   0x02,0x02,0x82,0x04,0x73,0xF8,0x20,0x04,0x00,0x02,0x3F,0xE2,
(0043) 			   0x20,0x42,0x40,0x82,0x40,0x02,0x3F,0xFA,0x20,0x02,0x20,0x42,
(0044) 			   0x20,0x22,0x3F,0xC2,0x00,0x02,0x00,0x00,  //迎
(0045)                0x00,0x00,0x02,0x01,0x42,0x02,0x22,0x04,0x3A,0x18,0x13,0xE0,
(0046) 			   0x02,0x00,0xFE,0x00,0x02,0x00,0x03,0xFC,0x0A,0x02,0x72,0x02,
(0047) 			   0x22,0x02,0x06,0x02,0x02,0x1E,0x00,0x00,  //光
(0048) 			   0x00,0x00,0x1F,0xF8,0x00,0x00,0x00,0x00,0x7F,0xFE,0x02,0x00,
(0049) 			   0x0C,0x00,0xF1,0xFE,0x50,0x84,0x10,0x84,0x18,0xFC,0x16,0x84,
(0050) 			   0x10,0x84,0x11,0xFE,0x10,0x80,0x00,0x00,  //临
(0051)                0x00,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x10,0x40,0x10,0x40,
(0052) 			   0x10,0x40,0xFF,0xFF,0x10,0x40,0x10,0x40,0x10,0x40,0x10,0x40,
(0053) 			   0x3F,0xE0,0x10,0x00,0x00,0x00,0x00,0x00,  //中
(0054)                0x00,0x00,0x7F,0xFF,0x40,0x02,0x50,0x12,0x51,0x12,0x51,0x12,
(0055) 			   0x51,0x12,0x5F,0xF2,0x51,0x12,0x51,0x92,0x51,0x72,0x50,0x12,
(0056) 			   0x40,0x02,0x7F,0xFF,0x00,0x00,0x00,0x00,  //国
(0057)                0x00,0x00,0x00,0x00,0x1F,0xF0,0x12,0x20,0x12,0x20,0x12,0x20,
(0058) 			   0x12,0x20,0xFF,0xFC,0x12,0x22,0x12,0x22,0x12,0x22,0x12,0x22,
(0059) 			   0x1F,0xF2,0x00,0x02,0x00,0x0E,0x00,0x00,  //电
(0060) 			   0x00,0x80,0x00,0x80,0x40,0x80,0x40,0x80,0x40,0x80,0x40,0x82,
(0061) 			   0x40,0x81,0x47,0xFE,0x48,0x80,0x50,0x80,0x60,0x80,0x40,0x80,
(0062) 			   0x00,0x80,0x01,0x80,0x00,0x80,0x00,0x00,  //子
(0063) 			   0x01,0x00,0x02,0x00,0x0C,0x00,0x3F,0xFE,0xE0,0x00,0x50,0x00,
(0064) 			   0x15,0x7E,0x15,0x44,0x95,0x44,0x75,0x44,0x55,0x44,0x15,0x44,
(0065) 			   0x15,0x7E,0x10,0x00,0x10,0x00,0x00,0x00,  //信
(0066)                0x00,0x00,0x00,0x04,0x00,0x1C,0x3F,0x80,0x2A,0xBC,0x2A,0x82,
(0067) 			   0x6A,0x82,0xAA,0xA2,0x2A,0x9A,0x2A,0x82,0x2A,0x82,0x3F,0x8E,
(0068) 			   0x00,0x00,0x00,0x10,0x00,0x0C,0x00,0x00,  //息
(0069)                0x10,0x80,0x10,0x82,0x11,0x01,0xFF,0xFE,0x12,0x00,0x14,0x02,
(0070) 			   0x00,0x02,0x13,0x04,0x12,0xC8,0x12,0x30,0xFE,0x30,0x12,0x48,
(0071) 			   0x13,0x84,0x12,0x06,0x10,0x04,0x00,0x00,  //技
(0072)                0x08,0x08,0x08,0x08,0x08,0x10,0x08,0x20,0x08,0x40,0x09,0x80,
(0073) 			   0x0A,0x00,0xFF,0xFE,0x0A,0x00,0x09,0x00,0x48,0x80,0x28,0x60,
(0074) 			   0x08,0x30,0x08,0x18,0x08,0x10,0x00,0x00,  //术
(0075)                0x08,0x00,0x8F,0x01,0x68,0x01,0x11,0xFA,0x09,0x02,0x13,0x04,
(0076) 			   0x23,0x08,0xE5,0x70,0x25,0x08,0x39,0x08,0x25,0x04,0x33,0xF6,
(0077) 			   0x32,0x03,0x21,0x02,0x01,0x00,0x00,0x00,  //资
(0078)                0x08,0x20,0x84,0x3F,0x60,0xC0,0x07,0x02,0x00,0x0C,0x7F,0xF0,
(0079) 			   0x40,0x04,0x4F,0x88,0x5A,0xB2,0x6A,0x81,0x4A,0xFE,0x4A,0x80,
(0080) 			   0x4A,0xA0,0x4F,0x90,0x40,0x0C,0x00,0x00,  //源
(0081)                0x00,0x00,0x7F,0xFE,0x40,0x10,0x48,0x20,0x44,0xC0,0x43,0x00,
(0082) 			   0x44,0xC0,0x58,0x30,0x44,0x20,0x42,0x40,0x41,0x80,0x4E,0x64,
(0083) 			   0x44,0x06,0x7F,0xFC,0x00,0x00,0x00,0x00,  //网
(0084) 			   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0085) 			   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0086) 			   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  //空
(0087) 			   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0088) 			   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0089) 			   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  //空
(0090) 			   };
(0091) #pragma data: data
(0092) /************************************************
(0093) 函 数 名:    DelaymS()
(0094) 功    能:    毫秒级延时函数
(0095) 输入参数:     延迟时间/系统晶体
(0096) 输出参数:    做相应的延迟处理
(0097) 描    述:    /
(0098) ***********************************************/
(0099) void DelaymS (uint i)           //延时函数,参数i为延时时间
(0100) {
(0101)     uchar j;                    //双重延时
(0102) 	for (;i!=0;i--)
    0166 C007      RJMP	0x016E
(0103) 	{
(0104) 	    for (j=30;j!=0;j--);
    0167 E14E      LDI	R20,0x1E
    0168 C001      RJMP	0x016A
    0169 954A      DEC	R20
    016A 2344      TST	R20
    016B F7E9      BNE	0x0169
    016C 5001      SUBI	R16,1
    016D 4010      SBCI	R17,0
    016E 3000      CPI	R16,0
    016F 0701      CPC	R16,R17
    0170 F7B1      BNE	0x0167
    0171 D097      RCALL	pop_gset1
    0172 9508      RET
(0105) 	}
(0106) }
(0107) /************************************************
(0108) 函 数 名:    Init_port()
(0109) 功    能:    单片机初始化函数
(0110) 输入参数:     /
(0111) 输出参数:    /
(0112) 描    述:    相关口方向的设置等
(0113) ***********************************************/
(0114) void Init_Port(void)
(0115) {
(0116) 	DDRD = 0xff;                      //PD口为推挽1输出
_Init_Port:
    0173 EF8F      LDI	R24,0xFF
    0174 BB81      OUT	0x11,R24
(0117) 	PORTD = 0x00;                     //PD口初始值为0
    0175 2422      CLR	R2
    0176 BA22      OUT	0x12,R2
    0177 9508      RET
_InputByte:
  mid                  --> R20
  i                    --> R22
  hang_no              --> R18
  lie_qishi            --> R16
    0178 D08B      RCALL	push_gset2
(0118) }
(0119) /************************************************
(0120) 函 数 名:    InputByte()
(0121) 功    能:    串行写入32bit数据(一行)的函数
(0122) 输入参数:     lie_qishi(起始的列) ,hang_no(需要送第几行)
(0123) 输出参数:    /
(0124) 描    述:    DATA=PD4为数据端,SRCLK=PD6为时钟端,bit7在先,时钟上升沿写入。
(0125) ***********************************************/
(0126) void InputByte (uint lie_qishi,uchar hang_no) 
(0127) {
(0128)     uchar i,mid;
(0129) 	for(i=32;i>0;i--)
    0179 E260      LDI	R22,0x20
    017A C015      RJMP	0x0190
(0130) 	{
(0131) 	   mid = buf[lie_qishi +i+i] & hang_no;  //操作的是hang_no位。
    017B 2E26      MOV	R2,R22
    017C 2433      CLR	R3
    017D 01F8      MOVW	R30,R16
    017E 0DE2      ADD	R30,R2
    017F 1DF3      ADC	R31,R3
    0180 0DE2      ADD	R30,R2
    0181 1DF3      ADC	R31,R3
    0182 E28A      LDI	R24,0x2A
    0183 E090      LDI	R25,0
    0184 0FE8      ADD	R30,R24
    0185 1FF9      ADC	R31,R25
    0186 9144      LPM	R20,0(Z)
    0187 2342      AND	R20,R18
(0132) 	   if(mid==0)
    0188 F411      BNE	0x018B
(0133) 	   PORTD |= (1<<PD4);             //数据端输出0,共阳LED,所以取反码
    0189 9A94      SBI	0x12,4
    018A C001      RJMP	0x018C
(0134) 	   else 
(0135) 	   PORTD &= ~(1<<PD4);            //否则输出1
    018B 9894      CBI	0x12,4
(0136) 	   PORTD |= (1<<PD6);             //时钟置高,产生下降沿。
    018C 9A96      SBI	0x12,6
(0137) 	   NOP();
    018D 0000      NOP
(0138) 	   PORTD &= ~(1<<PD6);            //时钟置低
    018E 9896      CBI	0x12,6
    018F 956A      DEC	R22
    0190 2422      CLR	R2
    0191 1626      CP	R2,R22
    0192 F340      BCS	0x017B
    0193 D068      RCALL	pop_gset2
    0194 9508      RET

⌨️ 快捷键说明

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