📄 rfidsys.lst
字号:
(0174) delay50us(40);
03A6 E208 LDI R16,0x28
03A7 E010 LDI R17,0
03A8 DEBE RCALL _delay50us
(0175) //delay50us(60);
(0176) if(length>effectLen)
03A9 840F LDD R0,Y+15
03AA 14C0 CP R12,R0
03AB F478 BCC 0x03BB
(0177) {
(0178) for(i=length-effectLen-1;i>=0;i--)
03AC 2D80 MOV R24,R0
03AD 198C SUB R24,R12
03AE 5081 SUBI R24,1
03AF 2EA8 MOV R10,R24
03B0 C007 RJMP 0x03B8
(0179) {
(0180) lcd_wrDat(' '&0xF0,(' '&0x0F)<<4);
03B1 2722 CLR R18
03B2 E200 LDI R16,0x20
03B3 DEF5 RCALL _lcd_wrDat
(0181) delay50us(40);
03B4 E208 LDI R16,0x28
03B5 E010 LDI R17,0
03B6 DEB0 RCALL _delay50us
03B7 94AA DEC R10
03B8 2D8A MOV R24,R10
03B9 3080 CPI R24,0
03BA F7B4 BGE 0x03B1
(0182) //delay50us(60);
(0183) }
(0184) }
(0185) for(i=effectLen-1;i>=0;i--)
03BB 2D8C MOV R24,R12
03BC 5081 SUBI R24,1
03BD 2EA8 MOV R10,R24
03BE C01E RJMP 0x03DD
(0186) {
(0187) lcd_wrDat( (dataElem[i]+0x30)&0xF0 ,( (dataElem[i]+0x30)&0x0F )<<4 );
03BF EF82 LDI R24,0xF2
03C0 E091 LDI R25,1
03C1 2DEA MOV R30,R10
03C2 27FF CLR R31
03C3 FDE7 SBRC R30,7
03C4 95F0 COM R31
03C5 0FE8 ADD R30,R24
03C6 1FF9 ADC R31,R25
03C7 8180 LDD R24,Z+0
03C8 2799 CLR R25
03C9 96C0 ADIW R24,0x30
03CA 2F28 MOV R18,R24
03CB 702F ANDI R18,0xF
03CC 7030 ANDI R19,0
03CD 0F22 LSL R18
03CE 1F33 ROL R19
03CF 0F22 LSL R18
03D0 1F33 ROL R19
03D1 0F22 LSL R18
03D2 1F33 ROL R19
03D3 0F22 LSL R18
03D4 1F33 ROL R19
03D5 2F08 MOV R16,R24
03D6 7F00 ANDI R16,0xF0
03D7 7010 ANDI R17,0
03D8 DED0 RCALL _lcd_wrDat
(0188) delay50us(40);
03D9 E208 LDI R16,0x28
03DA E010 LDI R17,0
03DB DE8B RCALL _delay50us
03DC 94AA DEC R10
03DD 2D8A MOV R24,R10
03DE 3080 CPI R24,0
03DF F6FC BGE 0x03BF
03E0 9621 ADIW R28,1
03E1 940E0653 CALL pop_gset5
03E3 9508 RET
_lcd_puts:
str --> R20
y --> R10
x --> R22
03E4 940E065A CALL push_gset3
03E6 2EA2 MOV R10,R18
03E7 2F60 MOV R22,R16
03E8 814E LDD R20,Y+6
03E9 815F LDD R21,Y+7
(0189) //delay50us(60);
(0190) }
(0191) }
(0192)
(0193) void lcd_puts(uint8 x,uint8 y,uint8 *str)
(0194) {
(0195) lcd_set_xy(x,y);
03EA 2D2A MOV R18,R10
03EB 2F06 MOV R16,R22
03EC DEC9 RCALL _lcd_set_xy
(0196) delay50us(20);
03ED E104 LDI R16,0x14
03EE E010 LDI R17,0
03EF DE77 RCALL _delay50us
03F0 C00F RJMP 0x0400
(0197) //delay50us(30);
(0198) while(*str)
(0199) {
(0200) lcd_wrDat((*(str))&0xF0,((*(str))&0x0F)<<4);
03F1 01FA MOVW R30,R20
03F2 8020 LDD R2,Z+0
03F3 2433 CLR R3
03F4 2D22 MOV R18,R2
03F5 702F ANDI R18,0xF
03F6 702F ANDI R18,0xF
03F7 9522 SWAP R18
03F8 2D02 MOV R16,R2
03F9 7F00 ANDI R16,0xF0
03FA DEAE RCALL _lcd_wrDat
(0201) str++;
03FB 5F4F SUBI R20,0xFF
03FC 4F5F SBCI R21,0xFF
(0202) delay50us(20);
03FD E104 LDI R16,0x14
03FE E010 LDI R17,0
03FF DE67 RCALL _delay50us
0400 01FA MOVW R30,R20
0401 8020 LDD R2,Z+0
0402 2022 TST R2
0403 F769 BNE 0x03F1
0404 940E064D CALL pop_gset3
0406 9508 RET
_lcd_puts_:
dlyMs --> R20
str --> R22
y --> R12
x --> R10
0407 940E0658 CALL push_gset4
0409 2EC2 MOV R12,R18
040A 2EA0 MOV R10,R16
040B 8568 LDD R22,Y+8
040C 8579 LDD R23,Y+9
040D 854A LDD R20,Y+10
(0203) //delay50us(30);
(0204) }
(0205) }
(0206)
(0207) void lcd_puts_(uint8 x,uint8 y,uint8 *str,uint8 dlyMs)
(0208) {
(0209) lcd_set_xy(x,y);
040E 2D2C MOV R18,R12
040F 2D0A MOV R16,R10
0410 DEA5 RCALL _lcd_set_xy
(0210) delay50us(20);
0411 E104 LDI R16,0x14
0412 E010 LDI R17,0
0413 DE53 RCALL _delay50us
0414 C00F RJMP 0x0424
(0211) //delay50us(30);
(0212) while(*str)
(0213) {
(0214) lcd_wrDat((*(str))&0xF0,((*(str))&0x0F)<<4);
0415 01FB MOVW R30,R22
0416 8020 LDD R2,Z+0
0417 2433 CLR R3
0418 2D22 MOV R18,R2
0419 702F ANDI R18,0xF
041A 702F ANDI R18,0xF
041B 9522 SWAP R18
041C 2D02 MOV R16,R2
041D 7F00 ANDI R16,0xF0
041E DE8A RCALL _lcd_wrDat
(0215) str++;
041F 5F6F SUBI R22,0xFF
0420 4F7F SBCI R23,0xFF
(0216) delay50ms(dlyMs);
0421 2F04 MOV R16,R20
0422 2711 CLR R17
0423 DE55 RCALL _delay50ms
0424 01FB MOVW R30,R22
0425 8020 LDD R2,Z+0
0426 2022 TST R2
0427 F769 BNE 0x0415
0428 940E0650 CALL pop_gset4
042A 9508 RET
(0217) }
(0218) }
(0219)
(0220) void lcd_clr()
(0221) {
(0222) lcd_wrCmd(0x00,0x10); //显示右移
_lcd_clr:
042B E120 LDI R18,0x10
042C 2700 CLR R16
042D DE6E RCALL _lcd_wrCmd
(0223) delay50us(200);
042E EC08 LDI R16,0xC8
042F E010 LDI R17,0
0430 DE36 RCALL _delay50us
0431 9508 RET
(0224) //delay50us(300);
(0225) }
(0226)
(0227) void lcd_init(void)
(0228) {
(0229) SPI_init();
_lcd_init:
0432 DE5C RCALL _SPI_init
(0230) //OUT_LCD_CS; //若LCD_CS
(0231) //SET_LCD_CS;
(0232) delay50ms(1);
0433 E001 LDI R16,1
0434 E010 LDI R17,0
0435 DE43 RCALL _delay50ms
(0233) lcd_wrCmd(0x30,0x30); //使用8位控制界面,使用基本指令集
0436 E320 LDI R18,0x30
0437 E300 LDI R16,0x30
0438 DE63 RCALL _lcd_wrCmd
(0234) //lcd_wrCmd(0x00,0xF0); //整体显示ON
(0235) lcd_wrCmd(0x00,0xC0); //整体显示ON
0439 EC20 LDI R18,0xC0
043A 2700 CLR R16
043B DE60 RCALL _lcd_wrCmd
(0236) lcd_wrCmd(0x00,0x10); //清屏
043C E120 LDI R18,0x10
043D 2700 CLR R16
043E DE5D RCALL _lcd_wrCmd
(0237) //lcd_wrCmd(0x10,0x00); //光标
(0238) lcd_wrCmd(0x00,0x60);
043F E620 LDI R18,0x60
0440 2700 CLR R16
0441 DE5A RCALL _lcd_wrCmd
(0239) //lcd_wrCmd(0x00,0x70); //显示右移
(0240) delay50ms(1); //不可省去!!!
0442 E001 LDI R16,1
0443 E010 LDI R17,0
0444 DE34 RCALL _delay50ms
0445 9508 RET
FILE: D:\RFIDsys\RFIDsys.C
(0001) /*********************************************************************
(0002)
(0003) 目 的: 建立操作LCD12864_ST7920液晶的示例程序
(0004)
(0005) 目标系统: 基于任何AVR单片机
(0006)
(0007) 应用软件: ICCAVR
(0008)
(0009) 版 本: Version 1.0
(0010)
(0011) 圆版时间: 2008-05-28
(0012)
(0013) 开发人员: hky
(0014)
(0015) 说 明: 若用于商业用途,请保留此段文字或注明代码来源
(0016)
(0017) *********************************************************************/
(0018)
(0019) /*01010101010101010101010101010101010101010101010101010101010101010101
(0020) ----------------------------------------------------------------------
(0021) 版本更新记录:
(0022)
(0023) ----------------------------------------------------------------------
(0024) 实验内容:
(0025) 初始化、读写Lcd12864_ST7920。
(0026) ----------------------------------------------------------------------
(0027) 硬件连接:
(0028) LCD12864_ST7920 ATmega16
(0029) 4.RS(CS) -------- VCC
(0030) 5.R/W(SID) -------- MOSI/PB5
(0031) 6.E(SCLK) -------- SCK/PB7
(0032) 15.PSB -------- GND
(0033) ----------------------------------------------------------------------
(0034) 10101010101010101010101010101010101010101010101010101010101010101010*/
(0035)
(0036) #include <iom16v.h>
(0037) #include "D:\Headers\LCD12864_ST7920.H"
(0038) //#include "PCF8563.h"
(0039) #include "D:\Headers\Hardware.H"
(0040) //#include "D:\ICC_H\I2C.H"
(0041) //#include "delay1.h"
(0042) /*--------------------------------------------------------------------
(0043) 函数名称:
(0044) 函数功能:
(0045) 注意事项:
(0046) 提示说明:
(0047) 输 入:
(0048) 返 回:
(0049) --------------------------------------------------------------------*/
(0050) void init_device()
(0051) {
(0052) // Input/Output Ports initialization
(0053) // Port A initialization
(0054) // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
(0055) // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
(0056) PORTA=0x00;
_init_device:
0446 2422 CLR R2
0447 BA2B OUT 0x1B,R2
(0057) DDRA=0x00;
0448 BA2A OUT 0x1A,R2
(0058)
(0059) // Port B initialization
(0060) // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
(0061) // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
(0062) PORTB=0x00;
0449 BA28 OUT 0x18,R2
(0063) DDRB=0x00;
044A BA27 OUT 0x17,R2
(0064)
(0065) // Port C initialization
(0066) // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
(0067) // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
(0068) PORTC=0x00;
044B BA25 OUT 0x15,R2
(0069) DDRC=0x00;
044C BA24 OUT 0x14,R2
(0070)
(0071) // Port D initialization
(0072) // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
(0073) // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
(0074) PORTD=0x00;
044D BA22 OUT 0x12,R2
(0075) DDRD=0x00;
044E BA21 OUT 0x11,R2
(0076)
(0077) // Timer/Counter 0 initialization
(0078) // Clock source: System Clock
(0079) // Clock value: Timer 0 Stopped
(0080) // Mode: Normal top=FFh
(0081) // OC0 output: Disconnected
(0082) TCCR0=0x00;
044F BE23 OUT 0x33,R2
(0083) TCNT0=0x00;
0450 BE22 OUT 0x32,R2
(0084) OCR0=0x00;
0451 BE2C OUT 0x3C,R2
(0085)
(0086) // Timer/Counter 1 initialization
(0087) // Clock source: System Clock
(0088) // Clock value: Timer 1 Stopped
(0089) // Mode: Normal top=FFFFh
(0090) // OC1A output: Discon.
(0091) // OC1B output: Discon.
(0092) // Noise Canceler: Off
(0093) // Input Capture on Falling Edge
(0094) // Timer 1 Overflow Interrupt: Off
(0095) // Input Capture Interrupt: Off
(0096) // Compare A Match Interrupt: Off
(0097) // Compare B Match Interrupt: Off
(0098) TCCR1A=0x00;
0452 BC2F OUT 0x2F,R2
(0099) TCCR1B=0x00;
0453 BC2E OUT 0x2E,R2
(0100) TCNT1H=0x00;
0454 BC2D OUT 0x2D,R2
(0101) TCNT1L=0x00;
0455 BC2C OUT 0x2C,R2
(0102) ICR1H=0x00;
0456 BC27 OUT 0x27,R2
(0103) ICR1L=0x00;
0457 BC26 OUT 0x26,R2
(0104) OCR1AH=0x00;
0458 BC2B OUT 0x2B,R2
(0105) OCR1AL=0x00;
0459 BC2A OUT 0x2A,R2
(0106) OCR1BH=0x00;
045A BC29 OUT 0x29,R2
(0107) OCR1BL=0x00;
045B BC28 OUT 0x28,R2
(0108)
(0109) // Timer/Counter 2 initialization
(0110) // Clock source: System Clock
(0111) // Clock value: Timer 2 Stopped
(0112) // Mode: Normal top=FFh
(0113) // OC2 output: Disconnected
(0114) ASSR=0x00;
045C BC22 OUT 0x22,R2
(0115) TCCR2=0x00;
045D BC25 OUT 0x25,R2
(0116) TCNT2=0x00;
045E BC24 OUT 0x24,R2
(0117) OCR2=0x00;
045F BC23 OUT 0x23,R2
(0118)
(0119) // External Interrupt(s) initialization
(0120) // INT0: Off
(0121) // INT1: Off
(0122) // INT2: Off
(0123) MCUCR=0x00;
0460 BE25 OUT 0x35,R2
(0124) MCUCSR=0x00;
0461 BE24 OUT 0x34,R2
(0125)
(0126) // Timer(s)/Counter(s) Interrupt(s) initialization
(0127) TIMSK=0x00;
0462 BE29 OUT 0x39,R2
(0128)
(0129) // Analog Comparator initialization
(0130) // Analog Comparator: Off
(0131) // Analog Comparator Input Capture by Timer/Counter 1: Off
(0132) ACSR=0x80;
0463 E880 LDI R24,0x80
0464 B988 OUT 0x08,R24
(0133) SFIOR=0x
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -