📄 assembly.lis
字号:
.text
0057 SPMCR = 0x57 ;RWW区忙标志,读RWW区允许,允许写程序存储区
0000
0000 ; void write_page (unsigned int adr, unsigned char function);
0000 ; bits 8:15 adr addresses the page...(must setup RAMPZ beforehand!!!)
0000 _write_page::
0000 1FD0 XCALL __WAIT_SPMEN__
0002 F801 movw r30, r16 ;move address to z pointer (R31 = ZH, R30 = ZL)
0004 20935700 STS SPMCR, R18 ;argument 2 decides function
0008 E895 SPM ;perform pagewrite
000A 0895 RET
000C
000C ;-----------------------------------------
000C
000C ; void fill_temp_buffer (unsigned int data, unsigned int adr);
000C ; bits 7:1 in adr addresses the word in the page... (2=first word, 4=second word etc..)
000C _fill_temp_buffer::
000C 19D0 XCALL __WAIT_SPMEN__
000E F901 movw r30, r18 ;move adress to z pointer (R31=ZH R30=ZL)
0010 0801 movw r0, r16 ;move data to reg 0 and 1
0012 31E0 LDI R19, 0x01
0014 30935700 STS SPMCR, R19
0018 E895 SPM ;Store program memory
001A 0895 RET
001C
001C ;-----------------------------------------
001C
001C ;unsigned char read_flash(unsigned int add);
001C _read_flash::
001C F12F mov r31,r17
001E E02F mov r30,r16
0020 0491 lpm r16,z
0022 1127 clr r17
0024 0895 ret
0026
0026 ;unsigned int read_program_memory (unsigned int adr ,unsigned char cmd);
0026 _read_program_memory::
0026 F801 movw r30, r16 ;move adress to z pointer
0028 20FD SBRC R18, 0 ;read lockbits? (second argument = 0x09)
002A 20935700 STS SPMCR, R18 ;if so, place second argument in SPMEN register
002E 0591 LPM r16, Z+
0030 1491 LPM r17, Z
0032 0895 RET
0034
0034 ;-----------------------------------------
0034
0034 _enableRWW::
0034 05D0 XCALL __WAIT_SPMEN__
0036 B1E1 LDI R27,0x11
0038 B0935700 STS SPMCR,R27
003C E895 SPM
003E 0895 RET
0040
0040 ;-----------------------------------------
0040
0040 __WAIT_SPMEN__:
0040 B0915700 LDS R27,SPMCR ; load SPMCR to R27
0044 B0FD SBRC R27,0 ; check SPMEN flag
0046 FCCF RJMP __WAIT_SPMEN__ ; wait for SPMEN flag cleared
0048 0895 RET
004A
004A ;-----------------------------------------
004A
004A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -