完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
写的熔丝位匹配程序,可以进入if判断语句,就是不往串口寄存器UDR0写入数据0x55,求高人解答,感激涕零!
#include #include #define F_CPU 12000000UL #define baud 9600 int fuse_check(); void uart0_init(void); void delay_1ms(); void main() { uart0_init(); if(fuse_check()==0) { while(1) { while( !(UCSR0A & (1< //delay_1ms(); } } //else // UDR0 = 0x66; //发送数据0x66 } int fuse_check() { unsigned int a=0,b=1; // 读取熔丝位低字节 asm("LDI R30,0x00"); //赋0x0000给Z指针 asm("LDI R31,0x00"); SPMCSR = 0x09; //置位SPMCSR寄存器 asm("LPM"); //读取低字节数据给R0 asm("STS 0x002E,R0"); //复制R0数据给PORTE if(PORTE==0x0C) //低字节匹配判断 { //读取熔丝位高字节 asm("LDI R30,0x03"); //赋0x0003给Z指针 asm("LDI R31,0x00"); SPMCSR=0x09; //置位SPMCSR寄存器 asm("LPM"); //读取低字节数据给R0 asm("STS 0x002E,R0"); //复制R0数据给PORTE if(PORTE==0x00) //高字节匹配判断 { //读取熔丝位扩展字节 asm("LDI R30,0x02"); //赋0x0002给Z指针 asm("LDI R31,0x00"); SPMCSR=0x09; //置位SPMCSR寄存器 asm("LPM"); //读取低字节数据给R0 asm("STS 0x002E,R0"); //复制R0数据给PORTE if(PORTE==0x4A) //扩展字节匹配判断 { b=0; return b; } else { a=1; return a; } } else { a=1; return a; } } else { a=1; return a; } } //UART0初始化 void uart0_init(void) { UCSR0A = 0x00; //设置波特率时无效 UCSR0B = 0x00; UCSR0C = 0x00; UBRR0L =(F_CPU/baud/8-1)%256; UBRR0H =(F_CPU/baud/8-1)/256; UCSR0C = (1< } |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
AVR Atmega16 Bootloader程序与上位机LabView程序
5130 浏览 6 评论
#include <ioavr.h>这个头文件我应该下什么编译器
7772 浏览 0 评论
3033 浏览 2 评论
3107 浏览 1 评论
10061 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 23:17 , Processed in 0.619521 second(s), Total 48, Slave 36 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号