📄 serial.c
字号:
//Serial.c
//
//Body: HT48C70-1
//Mask option
//WDT : Disable
//the others use the default value
#include <ht48c70-1.h>
#pragma vector isr_4 @ 0x4
#pragma vector isr_8 @ 0x8
#pragma vector isr_c @ 0xc
//ISR for safequard
void isr_4(){} // external ISR
void isr_8(){} // timer/event 0
void isr_c(){} // timer/event 1
//initialize registers for safeguard
void safeguard_init(){
_intc = 0;
_tmr0c = 0;
_tmr0h = 0;
_tmr0l = 0;
_tmr1c = 0;
_tmr1h = 0;
_tmr1l = 0;
_pac = 0xff;
_pbc = 0xff;
_pcc = 0xff;
_pdc = 0xff;
_pec = 0xff;
_pfc = 0xff;
_pgc = 0xff;
}
#define tx _pa3 //transmit pin
#define rx _pa2 //receive pin
#define _pac3 _13_3
#define _pac2 _13_2
unsigned char data;
unsigned char vall[10] @0x20;
void transmit(unsigned char);
void receive(unsigned char *);
//system frequency: 4MHz
//#define T 52 //baudrate 19200 = 4M/4/(T) => T = 52
//#define T 104 //baudrate 9600 = 4M/4/(T) => T = 104
//#define T 208 //baudrate 4800 = 4M/4/(T) => T = 208
#define T 416 //baudrate 2400 = 4M/4/(T) => T = 416
void main(){
safeguard_init();
_pac2 = 1; //set receive pin to input mode
_pac3 = 0; //set transmit pin to output mode
while(1)
{
// receive(&data);
transmit(data);
}
}
void transmit(unsigned char val){
unsigned char i;
tx = 0;
_delay(T-14);
for(i=0; i<8; i++)
{
if (val & 1)
tx = 1;
else
tx = 0;
val >>= 1;
_delay(T-14);
}
tx = 1;
_delay(T);
}
void receive(unsigned char *val)
{
unsigned char i,v;
v = 0;
while(rx); //wait start bit
_delay(T); // 单
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -