目的
つくれそうだから作ってみた。
x タイミング調整中?
x ALレジスターが1個だからたぶん遅い
//104 9600
//208 4800
//416 2400
//832 1200
# define UART_DELAY 9090 // 1/110
//#define UART_DELAY 832 // 1/1200
//#define UART_DELAY 832 // 1/1200
//#define UART_DELAY 96 // 1/9600
# define PD_ODR *(volatile uint8_t *)0x500F
# define on1() PD_ODR=0b00000001
# define off1() PD_ODR=0b00000000
//仮想シリアルへの一文字出力 9600bps
int pc_putc1(char ch) {
on1();
off1(); //START
delay(1);
if( ch & 0b00000001){
on1(); /*ビットが1*/
} else {
off1(); /*ビットが0*/
}//end if
delay(1); //0
if( ch & 0b00000010){
on1(); /*ビットが1*/
} else {
off1(); /*ビットが0*/
}//end if
delay(1); //1
if( ch & 0b00000100){
on1(); /*ビットが1*/
} else {
off1(); /*ビットが0*/
}//end if
delay(1); //2
if( ch & 0b00001000){
on1(); /*ビットが1*/
} else {
off1(); /*ビットが0*/
}//end if
delay(1); //3
///44444444444444444444444444
if( ch & 0b00010000){
on1(); /*ビットが1*/
} else {
off1(); /*ビットが0*/
}//end if
delay(1); //4
if( ch & 0b00100000){
on1(); /*ビットが1*/
} else {
off1(); /*ビットが0*/
}//end if
delay(1); //5
if( ch & 0b01000000){
on1(); /*ビットが1*/
} else {
off1(); /*ビットが0*/
}//end if
delay(1); //6
if( ch & 0b10000000){
on1(); /*ビットが1*/
} else {
off1(); /*ビットが0*/
}//end if
delay(1); //7
on1(); //Stop
delay(1);
}
void setup() {
//仮想シリアルの出力ポート
//ポートをhiにする 初期化
pinMode(PD0, OUTPUT);
on1();
}//setup
char *ss1; //文字のポインター
int ii; //ループカウンター
//無限ループ
void loop() {
ss1="Hello World !\r\n";
ii=0; //ループカウンター
while(ss1[ii]!=0){
//一文字出力
pc_putc1(ss1[ii]);ii++;
} //while
//1秒の待ち
delay(1000);
}//loop