📄 set_ubrr.s
字号:
//***************************************************************************
//*
//* Title : Set_UBRR
//* Author : Andrew Leech
//***************************************************************************
#if #cpu (atmega16).arch atmega16
#elif #cpu (atmega32)
.arch atmega16
#endif
#define __SFR_OFFSET 0
#include <avr/io.h>
//#include <avr/iom16.h>
#include "crystal.h"
#include "memory.h"
.list
//*****************************
//* Global Register Variables *
//*****************************
//New registers used for get_codes (V3.0)
#define UBRR_IN r16 // Device code
.section .ubrr,#execinstr,#alloc
// Pulse SCK Line
//Initialize UART.
ubrr_set:
cpi r16,03
breq three
cpi r16,05
breq five
cpi r16,07
breq seven
cpi r16,11
breq eleven //0x0b
cpi r16,15
breq fifteen //0x0f
cpi r16,23
breq twothree //0x17
cpi r16,31
breq threeone //0x1f
cpi r16,47
breq fourseven //0x2f
cpi r16,95
breq ninefive //0x5f
// cpi r16,191
// breq onenineone
rjmp load
three:
ldi r16,N115200 // set baud rate
rjmp load
five:
ldi r16,N76800 // set baud rate
rjmp load
seven:
ldi r16,N57600 // set baud rate
rjmp load
eleven:
ldi r16,N38400 // set baud rate
rjmp load
fifteen:
ldi r16,N28800 // set baud rate
rjmp load
twothree:
ldi r16,N19200 // set baud rate
rjmp load
threeone:
ldi r16,N14400 // set baud rate
rjmp load
fourseven:
ldi r16,N9600 // set baud rate
rjmp load
ninefive:
ldi r16,N4800 // set baud rate
// rjmp load
//onenineone:
// ldi r16,N2400 // set baud rate
load:
out 0x20,r17
out 0x09,r16
ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -