📄 testzhi.c
字号:
#include <iom128.h>
#include "includes.h"
#include "myiom128.h"
#define u8 unsigned char
#define u16 unsigned int
#define CharBufferA 0x01
#define CharBufferB 0x02
#define model_buffer 0x03
#define CABLEENABLE() PORTE|=0x08//0b00001000
#define UARTRFDISENABLE() PORTE|=0x04//0b00000100
extern void led_flash() ;
extern u8 scan_final_key() ;
extern void lcd_1() ;
extern void display_line_5() ;
extern void display_line_6() ;
extern void lcd_upside_initialization() ;
extern void data_clear() ;
u8 acknowledge = 0x08 ;
u8 i , key , ack[35] ;
u8 templet_num_high , templet_num_low ;
/************************************* InitUART *************************************/
void InitUART( unsigned char baudrate )
{
CABLEENABLE() ;
UARTRFDISENABLE() ;
UBRR0L = baudrate; /* set the baud rate */
DDRB |= 0x01 ;
PORTB &= ~0x01;
UBRR0H = 0x00;
UCSR0B&= ~0x04 ; //SET BIT UCSZ02 = 0
UCSR0C = 0x06; // SET BITS UCSZ01,UCSZ00 = 1 , indicate transmit 8 bits data )
UCSR0B&= ~0x18; //disable RXEN0 , TXEN0
UCSR0A|= 0x02; //ENABLE U2X0
}
/************************************* TransmitByte *************************************/
void TransmitByte( unsigned char data )
{
UCSR0B|= 0x08; //enable TXEN0
UCSR0B&=~0x10; //disable RXEN0
while ( !(UCSR0A & (1<<UDRE0)) ); /* wait for empty transmit buffer */
UDR0 = data; /* start transmittion */
}
/************************************* receiveByte *************************************/
unsigned char receiveByte()
{
UCSR0B&=~0x08; //disable TXEN0
UCSR0B|= 0x10; //enable RXEN0
while ( !(UCSR0A & (1<<RXC0)));
return UDR0 ;
}
/*********************************** ack_bag_length_1 ***********************************/
u8 ack_bag_length_1()
{
do
{
acknowledge = receiveByte() ;
}
while(acknowledge != 0xFE) ; //HEAD
for(i=0;i<4;i++)
{
receiveByte() ;
}
ack[0] = receiveByte() ; //确认码
receiveByte() ; //CHK
receiveByte() ; //END
return ack[0] ;
}
/******************************************** ok *******************************************/
void ok()
{
u8 ack = 0 ;
ack = ack ;
lcd_upside_initialization() ;
data_clear() ;
display_line_5() ; //display Right!
}
/******************************************* error******************************************/
void error()
{
u8 ack = 0 ;
ack = ack ;
lcd_upside_initialization() ;
data_clear() ;
display_line_6() ; //display Wrong!
}
/************************************* command_compare *************************************/
void command_compare(u8 ID_H , u8 ID_L)
{
u8 CHK ;
TransmitByte(0xFE) ;
TransmitByte(0x00) ; //2
TransmitByte(0x01) ;
TransmitByte(ID_H) ;
TransmitByte(ID_L) ;
TransmitByte(0x00) ; //6
CHK = 0x00 ;
CHK ^= 0x00 ; //2
CHK ^= 0x01 ;
CHK ^= ID_H ;
CHK ^= ID_L ;
CHK ^= 0x00 ; //6
TransmitByte(CHK) ;
TransmitByte(0xFD) ;
}
/**************************************** command_test_finger ***************************************/
void command_test_finger()
{
TransmitByte(0xFE) ;
TransmitByte(0x00) ; //2
TransmitByte(0x06) ;
TransmitByte(0x00) ;
TransmitByte(0x00) ;
TransmitByte(0x00) ; //6
TransmitByte(0x06) ;
TransmitByte(0xFD) ;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*********************************** zhiwen_compare ***************************************
将手指放在指纹识别器上,本段代码将生成指纹特征文件,并将生成的指纹特征文件与flash数据库中
templet_id号的指纹模版比对.假如一致,则运行ok(),否则运行error() .
*********************************** zhiwen_compare ***************************************/
void zhiwen_compare(u16 templet_id)
{
u8 ack , templet_id_h , templet_id_l ;
templet_id_h = templet_id>>8 ;
templet_id_l = templet_id ;
do
{
command_test_finger() ; //cmd_test_finger
ack = ack_bag_length_1() ;
}
while(ack!=0x00) ;
command_compare(templet_id_h , templet_id_l) ; //match_two_templet
ack = ack_bag_length_1() ;
if(ack == 0x00)
{
ok() ;
}
else error() ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -