AVR单片机计算器C语言源程序,一个基于AVR单片机的计算器程序.doc
一個基于AVR單片機的計算器程序
#include
#include//延時函數(shù)的頭文件
#include // 中斷函數(shù)的頭文件
#define uint unsigned int
#define uchar unsigned char
#define BIT(k) (1<
#define DI PORTC //夜晶的數(shù)據(jù)輸入端
#define No_key 255//沒有按鍵按下的返回值
#define key_port PORTD//鍵盤輸入
#define key_ddr DDRD
#define key_pin PIND //宏定義方便以后程序移植
#define lone_key_port PORTB //獨立鍵盤接口 用于輸入小數(shù)點
#define lone_key_ddr DDRB
#define lone_key_pin (PINB&BIT(0)) //讀取獨立鍵盤接口的電平
#define rs_0 PORTA&=~BIT(0) //RS復位
#define rs_1 PORTA|=BIT(0) //RS置位
#define en_0 PORTA&=~BIT(1) //使能端復位
#define en_1 PORTA|=BIT(1) //使能端置位
const uchar table1[]=" You are welcome!";//初始顯示字符
const uchar table2[]="ERROR!";//出錯提示字符
uchar a[7]={0,0,0,0,0,0,0},b[11]={0,0,0,0,0,0,0},a1[5]={0,0,0,0,0},b1[5]={0,0,0,0,0}; //用來存儲輸入的兩個數(shù)字,位數(shù)不可超過10位
uchar aa,bb,cc,dd; //用來記數(shù)輸入的位數(shù)
uchar sym; //用來保存符號
uchar flag;//起動標志
uchar fuhao; //符號標志
uchar deflag1 ; //小數(shù)點標志
uchar deflag2 ; //小數(shù)點標志
uchar overflag; //數(shù)值溢出標志
uchar allowflag=1; //符號允許標志,用于禁止連續(xù)兩個符號的輸出
uchar negative; //負數(shù)標志,當是負數(shù)要作相應的處理
long temp3,temp4; //計算的數(shù)值 得數(shù)用其中一個變量存儲即可,不用再浪費內存開辟其他變量
float temp1, temp2;
const unsigned char key_table[16] =
{
7, 8, 9, 10,
4, 5, 6, 11,
1, 2, 3, 12,
50,0, 21,13
}; // 鍵盤編碼可根據(jù)具體情況而設定
void port_init();//端口初始化
void device_init(); //夜晶初始化
void time_init();//定時器初始化
void wright_com(uchar com); //夜晶寫指令函數(shù)
void wright_data(uchar date); //夜晶寫數(shù)據(jù)函數(shù)
void lcd_handle(uchar temp); //夜晶顯示處理,該顯示什么,不該顯示什么
uchar keyscan(); //鍵盤掃描
void judgechar(uchar t); //判斷字符為符號還是數(shù)字
void decimal(uchar de) ; //判斷是不是小數(shù)點,只能出現(xiàn)兩個小數(shù)點,且不能連續(xù)出現(xiàn)
void reset() ; //復位函數(shù)
void calculate(void); //對數(shù)值進行計算
void result(long value); //顯示結果
void flow_clew() ; //溢出提示函數(shù)
int main()
{
port_init();
device_init();
time_init(); //初始化
while(
總結
以上是生活随笔為你收集整理的AVR单片机计算器C语言源程序,一个基于AVR单片机的计算器程序.doc的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: form提交后台注解拿不到数据_浏览器是
- 下一篇: keep老是显示服务器开小差,nginx