📄 test.lst
字号:
__start:
__text_start:
03EA EFCF LDI R28,0xFF
03EB E0D4 LDI R29,4
03EC BFCD OUT 0x3D,R28
03ED BFDE OUT 0x3E,R29
03EE 51C0 SUBI R28,0x10
03EF 40D0 SBCI R29,0
03F0 EA0A LDI R16,0xAA
03F1 8308 STD Y+0,R16
03F2 2400 CLR R0
03F3 E4E4 LDI R30,0x44
03F4 E0F1 LDI R31,1
03F5 E011 LDI R17,1
03F6 34E6 CPI R30,0x46
03F7 07F1 CPC R31,R17
03F8 F011 BEQ 0x03FB
03F9 9201 ST R0,Z+
03FA CFFB RJMP 0x03F6
03FB 8300 STD Z+0,R16
03FC E9E0 LDI R30,0x90
03FD E0F7 LDI R31,7
03FE E0A0 LDI R26,0
03FF E0B1 LDI R27,1
0400 E017 LDI R17,7
0401 3DE4 CPI R30,0xD4
0402 07F1 CPC R31,R17
0403 F021 BEQ 0x0408
0404 95C8 LPM
0405 9631 ADIW R30,1
0406 920D ST R0,X+
0407 CFF9 RJMP 0x0401
0408 D04F RCALL _main
_exit:
0409 CFFF RJMP _exit
FILE: D:\工作\240X12~1\(000)\TEST.C
(0001) // Target : M88
(0002) // Crystal: 16.0000Mhz
(0003) #include <iom88v.h>
(0004) #include <macros.h>
(0005) #include "240128.h"
(0006) //#include "storeroom.h"
(0007) //------------------------------------------------------------------------------
(0008) void port_init(void)
(0009) {
(0010) PORTB = 0xFF;
_port_init:
040A EF8F LDI R24,0xFF
040B B985 OUT 0x05,R24
(0011) DDRB = 0xFF;
040C B984 OUT 0x04,R24
(0012) PORTC = 0xFF; //m103 output only
040D B988 OUT 0x08,R24
(0013) DDRC = 0xFF;
040E B987 OUT 0x07,R24
(0014) PORTD = 0xFF;
040F B98B OUT 0x0B,R24
(0015) DDRD = 0xFF;
0410 B98A OUT 0x0A,R24
0411 9508 RET
(0016) }
(0017) void init_devices(void)
(0018) {
(0019) CLI(); //disable all interrupts
_init_devices:
0412 94F8 BCLR 7
(0020) port_init();
0413 DFF6 RCALL _port_init
(0021) MCUCR = 0x00;
0414 2422 CLR R2
0415 BE25 OUT 0x35,R2
(0022) EICRA = 0x00; //extended ext ints
0416 92200069 STS 0x69,R2
(0023) EIMSK = 0x00;
0418 BA2D OUT 0x1D,R2
(0024) TIMSK0 = 0x00; //timer 0 interrupt sources
0419 9220006E STS 0x6E,R2
(0025) TIMSK1 = 0x00; //timer 1 interrupt sources
041B 9220006F STS 0x6F,R2
(0026) TIMSK2 = 0x00; //timer 2 interrupt sources
041D 92200070 STS 0x70,R2
(0027) PCMSK0 = 0x00; //pin change mask 0
041F 9220006B STS 0x6B,R2
(0028) PCMSK1 = 0x00; //pin change mask 1
0421 9220006C STS 0x6C,R2
(0029) PCMSK2 = 0x00; //pin change mask 2
0423 9220006D STS 0x6D,R2
(0030) PCICR = 0x00; //pin change enable
0425 92200068 STS 0x68,R2
(0031) PRR = 0x00; //power controller
0427 92200064 STS 0x64,R2
(0032) SEI(); //re-enable interrupts
0429 9478 BSET 7
042A 9508 RET
(0033) }
(0034) //------------------------------------------------------------------------------
(0035) /*********************************************************************
(0036) 延时
(0037) *********************************************************************/
(0038) void delay_1us(void)
(0039) {
(0040) asm("nop");asm("nop");asm("nop");
_delay_1us:
042B 0000 NOP
042C 0000 NOP
042D 0000 NOP
042E 9508 RET
_delay_nus:
i --> R20
n --> R22
042F D40E RCALL push_gset2
0430 01B8 MOVW R22,R16
(0041) }
(0042) void delay_nus(unsigned int n)
(0043) {
(0044) unsigned int i=0;
0431 2744 CLR R20
0432 2755 CLR R21
(0045) for (i=0;i<n;i++) delay_1us();
0433 C003 RJMP 0x0437
0434 DFF6 RCALL _delay_1us
0435 5F4F SUBI R20,0xFF
0436 4F5F SBCI R21,0xFF
0437 1746 CP R20,R22
0438 0757 CPC R21,R23
0439 F3D0 BCS 0x0434
043A D3F7 RCALL pop_gset2
043B 9508 RET
_delay_1ms:
i --> R20
043C D403 RCALL push_gset1
(0046) }
(0047) void delay_1ms(void)
(0048) {
(0049) unsigned int i;
(0050) delay_nus(1000);
043D EE08 LDI R16,0xE8
043E E013 LDI R17,3
043F DFEF RCALL _delay_nus
(0051) for (i=0;i<1;i++);
0440 2744 CLR R20
0441 2755 CLR R21
0442 C002 RJMP 0x0445
0443 5F4F SUBI R20,0xFF
0444 4F5F SBCI R21,0xFF
0445 3041 CPI R20,1
0446 E0E0 LDI R30,0
0447 075E CPC R21,R30
0448 F3D0 BCS 0x0443
0449 D3F9 RCALL pop_gset1
044A 9508 RET
_delay_nms:
i --> R20
n --> R22
044B D3F2 RCALL push_gset2
044C 01B8 MOVW R22,R16
(0052) }
(0053) void delay_nms(unsigned int n)
(0054) {
(0055) unsigned int i=0;
044D 2744 CLR R20
044E 2755 CLR R21
(0056) for (i=0;i<n;i++) delay_1ms();
044F C003 RJMP 0x0453
0450 DFEB RCALL _delay_1ms
0451 5F4F SUBI R20,0xFF
0452 4F5F SBCI R21,0xFF
0453 1746 CP R20,R22
0454 0757 CPC R21,R23
0455 F3D0 BCS 0x0450
0456 D3DB RCALL pop_gset2
0457 9508 RET
_main:
i --> R20
0458 9725 SBIW R28,5
(0057) }
(0058)
(0059) //------------------------------------------------------------------------------
(0060) void main(void)
(0061) {
(0062) unsigned char i;
(0063) init_devices();
0459 DFB8 RCALL _init_devices
(0064) LCD_INIT();
045A D0EB RCALL _LCD_INIT
045B C081 RJMP 0x04DD
(0065) while(1)
(0066) {
(0067) //LCD_PRINT_240128(ouravr);
(0068) //delay_nms(1000);
(0069) LCD_CLEAR(0x00);
045C 2700 CLR R16
045D D103 RCALL _LCD_CLEAR
(0070) delay_nms(500);
045E EF04 LDI R16,0xF4
045F E011 LDI R17,1
0460 DFEA RCALL _delay_nms
(0071) PRINT_words(0,0,"test for:中.文*测~试");
0461 E28F LDI R24,0x2F
0462 E091 LDI R25,1
0463 8399 STD Y+1,R25
0464 8388 STD Y+0,R24
0465 2722 CLR R18
0466 2700 CLR R16
0467 D154 RCALL _PRINT_words
(0072) delay_nms(500);
0468 EF04 LDI R16,0xF4
0469 E011 LDI R17,1
046A DFE0 RCALL _delay_nms
(0073) PRINT_words(11,2,"T6963C use ATMega88");
046B E18B LDI R24,0x1B
046C E091 LDI R25,1
046D 8399 STD Y+1,R25
046E 8388 STD Y+0,R24
046F E022 LDI R18,2
0470 E00B LDI R16,0xB
0471 D14A RCALL _PRINT_words
(0074) delay_nms(500);
0472 EF04 LDI R16,0xF4
0473 E011 LDI R17,1
0474 DFD6 RCALL _delay_nms
(0075) PRINT_words(2,4,"2007年5月27日-14点09分##秒");
0475 E080 LDI R24,0
0476 E091 LDI R25,1
0477 8399 STD Y+1,R25
0478 8388 STD Y+0,R24
0479 E024 LDI R18,4
047A E002 LDI R16,2
047B D140 RCALL _PRINT_words
(0076) delay_nms(500);
047C EF04 LDI R16,0xF4
047D E011 LDI R17,1
047E DFCC RCALL _delay_nms
(0077) PRINT_line(5,50,80,50,8); // 线1
047F E088 LDI R24,0x8
0480 838C STD Y+4,R24
0481 E382 LDI R24,0x32
0482 838A STD Y+2,R24
0483 E580 LDI R24,0x50
0484 8388 STD Y+0,R24
0485 E322 LDI R18,0x32
0486 E005 LDI R16,5
0487 D228 RCALL _PRINT_line
(0078) delay_nms(500);
0488 EF04 LDI R16,0xF4
0489 E011 LDI R17,1
048A DFC0 RCALL _delay_nms
(0079) PRINT_line(5,50,80,20,8); // 线2
048B E088 LDI R24,0x8
048C 838C STD Y+4,R24
048D E184 LDI R24,0x14
048E 838A STD Y+2,R24
048F E580 LDI R24,0x50
0490 8388 STD Y+0,R24
0491 E322 LDI R18,0x32
0492 E005 LDI R16,5
0493 D21C RCALL _PRINT_line
(0080) delay_nms(500);
0494 EF04 LDI R16,0xF4
0495 E011 LDI R17,1
0496 DFB4 RCALL _delay_nms
(0081) PRINT_line(80,20,80,50,8); // 线3
0497 E088 LDI R24,0x8
0498 838C STD Y+4,R24
0499 E382 LDI R24,0x32
049A 838A STD Y+2,R24
049B E580 LDI R24,0x50
049C 8388 STD Y+0,R24
049D E124 LDI R18,0x14
049E E500 LDI R16,0x50
049F D210 RCALL _PRINT_line
(0082) delay_nms(500);
04A0 EF04 LDI R16,0xF4
04A1 E011 LDI R17,1
04A2 DFA8 RCALL _delay_nms
(0083) for (i=120;i>0;i--)
04A3 E748 LDI R20,0x78
04A4 C017 RJMP 0x04BC
(0084) {
(0085) PRINT_circle(120,64,i+1,0); // 擦除外圆
04A5 2422 CLR R2
04A6 822A STD Y+2,R2
04A7 2F84 MOV R24,R20
04A8 5F8F SUBI R24,0xFF
04A9 8388 STD Y+0,R24
04AA E420 LDI R18,0x40
04AB E708 LDI R16,0x78
04AC D29F RCALL _PRINT_circle
(0086) PRINT_circle(120,64,i,8);
04AD E088 LDI R24,0x8
04AE 838A STD Y+2,R24
04AF 8348 STD Y+0,R20
04B0 E420 LDI R18,0x40
04B1 E708 LDI R16,0x78
04B2 D299 RCALL _PRINT_circle
(0087) PRINT_circle(120,64,i-1,8);
04B3 E088 LDI R24,0x8
04B4 838A STD Y+2,R24
04B5 2F84 MOV R24,R20
04B6 5081 SUBI R24,1
04B7 8388 STD Y+0,R24
04B8 E420 LDI R18,0x40
04B9 E708 LDI R16,0x78
04BA D291 RCALL _PRINT_circle
04BB 954A DEC R20
04BC 2422 CLR R2
04BD 1624 CP R2,R20
04BE F330 BCS 0x04A5
(0088) }
(0089) for (i=5;i<64;i++)
04BF E045 LDI R20,5
04C0 C01A RJMP 0x04DB
(0090) {
(0091) PRINT_circle(120,64,i-1,0); // 擦除内圆
04C1 2422 CLR R2
04C2 822A STD Y+2,R2
04C3 2F84 MOV R24,R20
04C4 5081 SUBI R24,1
04C5 8388 STD Y+0,R24
04C6 E420 LDI R18,0x40
04C7 E708 LDI R16,0x78
04C8 D283 RCALL _PRINT_circle
(0092) PRINT_circle(120,64,i,8);
04C9 E088 LDI R24,0x8
04CA 838A STD Y+2,R24
04CB 8348 STD Y+0,R20
04CC E420 LDI R18,0x40
04CD E708 LDI R16,0x78
04CE D27D RCALL _PRINT_circle
(0093) PRINT_circle(120,64,i+1,8);
04CF E088 LDI R24,0x8
04D0 838A STD Y+2,R24
04D1 2F84 MOV R24,R20
04D2 5F8F SUBI R24,0xFF
04D3 8388 STD Y+0,R24
04D4 E420 LDI R18,0x40
04D5 E708 LDI R16,0x78
04D6 D275 RCALL _PRINT_circle
(0094) delay_nms(50);
04D7 E302 LDI R16,0x32
04D8 E010 LDI R17,0
04D9 DF71 RCALL _delay_nms
04DA 9543 INC R20
04DB 3440 CPI R20,0x40
04DC F320 BCS 0x04C1
04DD CF7E RJMP 0x045C
04DE 9625 ADIW R28,5
04DF 9508 RET
FILE: D:\工作\240X12~1\(000)\240128.C
(0001) /*******************************************************************************
(0002) T6963C液晶驱动 RT240128
(0003) MAGE88 16M
(0004) *******************************************************************************/
(0005) #include <iom88v.h>
(0006) #include <macros.h>
(0007) #include "240128.h"
(0008) #include "storeroom.h"
(0009) const unsigned char turnf[8] = {7,6,5,4,3,2,1,0};
(0010) unsigned char gCurRow,gCurCol;
(0011) /*******************************************************************************
(0012) 状态位STA1,STA0判断读写指令和读写数据,在读写数据或者写入命令前必须保证均为1。
(0013) *******************************************************************************/
(0014) unsigned char fnSTA01(void)
(0015) {
(0016) if( (LCD_RD_STATUS() & 0x03) == 0x03 ) return(0);
_fnSTA01:
04E0 D023 RCALL _LCD_RD_STATUS
04E1 2F80 MOV R24,R16
04E2 7083 ANDI R24,3
04E3 3083 CPI R24,3
04E4 F411 BNE 0x04E7
04E5 2700 CLR R16
04E6 C001 RJMP 0x04E8
(0017) else return(1);
04E7 E001 LDI R16,1
04E8 9508 RET
(0018) }
(0019) /*******************************************************************************
(0020) 状态位STA2,如果STA2=1 为自动读状态
(0021) *******************************************************************************/
(0022) unsigned char fnSTA2(void)
(0023) {
(0024) if( (LCD_RD_STATUS() & 0x04) == 0x04 ) return(0);
_fnSTA2:
04E9 D01A RCALL _LCD_RD_STATUS
04EA 2F80 MOV R24,R16
04EB 7084 ANDI R24,4
04EC 3084 CPI R24,4
04ED F411 BNE 0x04F0
04EE 2700 CLR R16
04EF C001 RJMP 0x04F1
(0025) else return(1);
04F0 E001 LDI R16,1
04F1 9508 RET
(0026) }
(0027) /*******************************************************************************
(0028) 状态位STA3 如果STA3 = 1 数据自动写状态
(0029) *******************************************************************************/
(0030) unsigned char fnSTA3(void)
(0031) {
(0032) if( (LCD_RD_STATUS() & 0x08) == 0x08 ) return(0);
_fnSTA3:
04F2 D011 RCALL _LCD_RD_STATUS
04F3 2F80 MOV R24,R16
04F4 7088 ANDI R24,0x8
04F5 3088 CPI R24,0x8
04F6 F411 BNE 0x04F9
04F7 2700 CLR R16
04F8 C001 RJMP 0x04FA
(0033) else return(1);
04F9 E001 LDI R16,1
04FA 9508 RET
(0034) }
(0035) /*******************************************************************************
(0036) 状态位STA6 如果STA6 =1 屏读/屏拷贝状态
(0037) *******************************************************************************/
(0038) unsigned char fnSTA6(void)
(0039) {
(0040) if( (LCD_RD_STATUS() & 0x40) == 0x40 ) return(0);
_fnSTA6:
04FB D008 RCALL _LCD_RD_STATUS
04FC 2F80 MOV R24,R16
04FD 7480 ANDI R24,0x40
04FE 3480 CPI R24,0x40
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -