📄 serial.s90
字号:
sendchar:
; 1. #include "defines.h"
; 2.
; 3. void sendchar(char c)
; 4. {
; 5. #ifdef _ATMEGA32
; 6. UDR=c;
; 7. while (!(UCSRA & (1<<TXC))); //wait until byte sendt
; 8. UCSRA |= (1<<TXC); //delete TXCflag
; 9. #endif
; 10. #ifdef _ATMEGA161
; 11. UDR0=c;
OUT LOW(12),R16
Y_0003:
; 12. while (!(UCSR0A & (1<<TXC0))); //wait until byte sendt
SBIS LOW(11),LOW(6)
RJMP Y_0003
; 13. UCSR0A |= (1<<TXC0); //delete TXCflag
SBI LOW(11),LOW(6)
; 14. #endif
; 15. #ifdef _ATMEGA163
; 16. UDR=c;
; 17. while (!(UCSRA & (1<<TXC))); //wait until byte sendt
; 18. UCSRA |= (1<<TXC); //delete TXCflag
; 19. #endif
; 20. #ifdef _ATMEGA104
; 21. UDR1=c;
; 22. while (!(UCSR1A & (1<<TXC))); //wait until byte sendt
; 23. UCSR1A |= (1<<TXC); //delete TXCflag
; 24. #endif
; 25.
; 26. }
RET
; c R16
recchar:
; 27.
; 28. char recchar(void)
; 29. {
Y_0006:
; 30. #ifdef _ATMEGA32
; 31. while(!(UCSRA & (1<<RXC))); // Wait for data to come
; 32. return UDR;
; 33. #endif
; 34. #ifdef _ATMEGA161
; 35. while(!(UCSR0A & (1<<RXC0))); // Wait for data to come
IN R16,LOW(11)
CPI R16,LOW(0)
BRGE Y_0006
; 36. return UDR0;
IN R16,LOW(12)
; 37. #endif
; 38. #ifdef _ATMEGA163
; 39. while(!(UCSRA & (1<<RXC))); // Wait for data to come
; 40. return UDR;
; 41. #endif
; 42. #ifdef _ATMEGA104
; 43. while(!(UCSR1A & (1<<RXC))); // Wait for data to come
; 44. return UDR1;
; 45. #endif
; 46. }
RET
; 47.
; 48.
; 49.
; 50.
;.END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -