qin552011373 发表于 2013-7-19 15:41 
或者 你把汇编发上来一块研究下
汇编程序如下:其中nvm_read_byte为1函数名,其声明为uint8_t nvm_read_byte(uint8_t nvm_cmd, uint16_t address);汇编程序是如何和C语言嵌套的呢?猜测:R24中的数据是想要得到的即函数nvm_read_byte的返回值
汇编注释可以结合1楼步骤看。
Z为指针寄存器!
1:将要读的production signature row地址放到Z中
2:写相应CMD的命令
3:读数据
PUBLIC_FUNCTION(nvm_read_byte)
lds r20, NVM_CMD ; Store NVM command register
mov ZL, r22 ; Load byte index into low byte of Z.
mov ZH, r23 ; Load high byte into Z.
sts NVM_CMD, r24 ; Load prepared command into NVM Command register.
lpm r24, Z ; Perform an LPM to read out byte
sts NVM_CMD, r20 ; Restore NVM command register
ret
END_FUNC(nvm_read_byte)
可以换成C吗?
|