|
|
| | -文章搜索 - 最新文章 - | |
AVR汇编语言如何实现如 LJMP @A+DPTR这样的散转结构 |
| 发布时间:2002年7月3日 点击次数:7086 |
| 来源: 作者: |
.include "8515def.inc" .dseg keyone: .byte 1 .cseg rjmp reset .org 0x10 RESET: ldi r16,low(RAMEND) ; ram 的顶端 ldi r17,high(RAMEND) out spl,r16 ; 设置堆栈指针指向ram顶部 out sph,r17 ldi r16,1 sts keyone,r16 ;变量初始化 L2: lds R20,keyone ldi R24,low(L8) ;取散转表首地址 ldi R25,high(L8) clr r21 subi r20,1 ;计算表内偏移量 sbci r21,0 lsl r20 ;注意对FLASH的地址是字寻址 rol r21 add r24,r20 ;相当于 @a+dptr adc r25,r21 mov R30,R24 mov R31,R25 ijmp ;间接跳转指令,指向 z=r30,31 L8: rcall prog1 rjmp L6 rcall prog2 rjmp L6 rcall prog3 rjmp L6 rcall prog4 rjmp L6 rcall prog5 L6: NOP rjmp L2 ret prog1: ldi R24,2 sts keyone,R24 ret prog2: ldi R24,3 sts keyone,R24 ret prog3: ldi R24,4 sts keyone,R24 ret prog4: ldi R24,5 sts keyone,R24 ret prog5: ldi R24,1 sts keyone,R24 ret |
|
|
|
|
[AVR单片机] 相关文章: 请问在CODEVISION AVR C中如何在函数中传递数组的地址?简介: void main(void) { char temp_buffer[50]; ...... send_data(temp_buffer); ........ } void send_data(data_buffer) char data_buffer[50]; { &nbs...... at90s2313串行加密后是不是就没法再擦掉重写了? 有-5V - +5V的A/D芯片吗??? avr高手请进---向导生成的uart结构...... avr-gcc写的一段代码,用来驱动led |
|
|
|