47 lines
1.2 KiB
Python
47 lines
1.2 KiB
Python
import platform.pch.pic as pic
|
||
import su8250
|
||
import t, c
|
||
|
||
|
||
# 串口初始化
|
||
def init():
|
||
# 初始化COM1端口
|
||
su8250.init(su8250.COM1_PORT)
|
||
# 启用COM1中断(IRQ4)
|
||
pic.clearMask(4)
|
||
|
||
# 发送一个字符到COM1
|
||
def putc(cr: t.CChar):
|
||
su8250.putchar(su8250.COM1_PORT, cr)
|
||
|
||
def putchar(cr: t.CChar):
|
||
su8250.putchar(su8250.COM1_PORT, cr)
|
||
|
||
# 从COM1读取一个字符
|
||
def getchar() -> t.CChar:
|
||
return su8250.getchar(su8250.COM1_PORT)
|
||
|
||
# 发送一个字符串到COM1
|
||
def puts(s: str):
|
||
# 逐个字符发送,直接复用putchar的逻辑
|
||
for i in s:
|
||
putchar(i)
|
||
|
||
# 检查COM1是否有数据可读
|
||
def isDataAvailable() -> t.CInt:
|
||
return su8250.isDataAvailable(su8250.COM1_PORT)
|
||
|
||
# 检查COM1发送缓冲区是否为空
|
||
def isTransmitEmpty() -> t.CInt:
|
||
return su8250.isTransmitEmpty(su8250.COM1_PORT)
|
||
|
||
# 发送32位十六进制值到COM1
|
||
def put_hex32(value: t.CUInt32T):
|
||
hex_digits: t.CArray[t.CChar, None] = ["0123456789ABCDEF"]
|
||
buffer: t.CArray[t.CChar, 9]
|
||
for i in range(7, -1, -1):
|
||
buffer[i] = hex_digits[value & 0xF]
|
||
value >>= 4
|
||
buffer[8] = '\0'
|
||
puts(buffer)
|