|
发表于 2009-4-5 22:27:47
|
显示全部楼层
![](http://cache.amobbs.com/bbs_upload782111/files_13/ourdev_433095.jpg)
(原文件名:STK500 TEST.jpg)
这个M16不太好用,用汇编写了一小段程序测试串口没成功,用示波器测一点信号都没有发出,而我以前用TN2313和MEGA48等都很好用。看来还得多研究。
;从PC串口接收到一个字节后加一再用串口传回PC
;atmega16 fuse:ff,c7,ff clk=14.7456
;***************************************************
.include"m16def.inc"
.def data_uart=r21
.def temp0=r16
.def temp1=r17
start:
;SP置初值
ldi temp0,low(ramend)
out spl,temp0
ldi temp0,high(ramend)
out sph,temp0 ;sp set
;设置串口为2400,N,8,1 MODEL
ldi temp0,low(383)
out ubrrl,temp0 ;
ldi temp0,high(383)
out ubrrh,temp0 ;设置波特率
ldi temp0,0b00011000
out ucsrb,temp0
ldi temp0,0b10000110
out ucsrc,temp0
;从PC串口接收到一个字节后加一再用串口传回PC
rcall uart_rx
inc data_uart
rcall uart_tx
rjmp pc-3
;****************************************************
;过程名:uart_tx
;功能:从串行口发数据到PC
;入口参数:data_uart
;出口参数:tx
;影响资源:tx,data_uart
;****************************************************
uart_tx:
; 等待发送缓冲器为空
sbis UCSRA,UDRE
rjmp uart_tx
; 将数据放入缓冲器,发送数据
out udr,data_UART
ret
;****************************************************
;过程名:uart_rx
;功能:接收PC数据保存到data_uart
;入口参数:rx
;出口参数:data_uart
;影响资源:tx,data_uart
;****************************************************
uart_rx:
; 等待接收数据
sbis UCSRA, RXC
rjmp uart_rx
; 从缓冲器中获取并返回数据
in data_UART,udr
ret |
|