📄 cpldac1.c
字号:
#include <avr/io.h>#include "KBDaC1.h"#include "CPLDaC1.h"/* Function: uint8_t CPLD_u8ReadKeys(void)Description: serially reads one port value (1 bit) and compose result byte value */ uint8_t CPLD_u8ReadKeys(void){ uint8_t u8Result; uint8_t u8Index; DDRC |= (1<<CPLD_nSerCLK); /* SerCLK as output */ DDRC |= (1<<CPLD_nSerEN); /* SerEN as output */ DDRC |= (1<<CPLD_nSerRDWR); /* SerRDWR as output */ DDRD &= (~(1<<CPLD_nSerDATA)); /* SerDATA as input */ PORTC &= (~(1<<CPLD_nSerRDWR)); /* RDWR=0, read from CPLD operation */ PORTC |= (1<<CPLD_nSerEN); /* EN=1, serial clock disabled, read keys to parallel register */ PORTC &= (~(1<<CPLD_nSerEN)); /* EN=0, serial clock enabled */ u8Result = 0; /* reset the return value */ for (u8Index=0; u8Index < 8; u8Index++) { u8Result>>=1; PORTC |= (1<<CPLD_nSerCLK); /* SerCLK = 1 */ PORTC &= (~(1<<CPLD_nSerCLK)); /* SerCLK = 0 */ u8Result |= PIND & (1<<CPLD_nSerDATA); /* Insert the port value to u8Result and shift left 1 position */ } return (u8Result);}void CPLD_vWriteDivider(uint8_t u8Prescaler, uint16_t u16Counter){ uint16_t u16MaskC; uint8_t u8MaskP; DDRC |= (1<<CPLD_nSerCLK); /* SerCLK as output */ DDRC |= (1<<CPLD_nSerEN); /* SerEN as output */ DDRC |= (1<<CPLD_nSerRDWR); /* SerRDWR as output */ DDRD |= (1<<CPLD_nSerDATA); /* SerDATA as output */ PORTC |=(1<<CPLD_nSerRDWR); /* RDWR=1, write to CPLD operation */ PORTC &= (~(1<<CPLD_nSerEN)); /* EN=0, serial clock enabled */ u8MaskP = 1<<CPLD_nDivRegSize; while (u8MaskP!=0) { if (u8Prescaler&u8MaskP) { PORTD |=(1<<CPLD_nSerDATA); } else { PORTD &=(~(1<<CPLD_nSerDATA)); } PORTC |= (1<<CPLD_nSerCLK); /* SerCLK = 1 */ PORTC &= (~(1<<CPLD_nSerCLK)); /* SerCLK = 0 */ u8MaskP >>= 1; } u16MaskC = 1<<CPLD_nCmpRegSize; while (u16MaskC!=0) { if (u16Counter&u16MaskC) { PORTD |=(1<<CPLD_nSerDATA); } else { PORTD &=(~(1<<CPLD_nSerDATA)); } PORTC |= (1<<CPLD_nSerCLK); /* SerCLK = 1 */ PORTC &= (~(1<<CPLD_nSerCLK)); /* SerCLK = 0 */ u16MaskC >>= 1; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -