软件开发MC9S12XS128并口12864液晶显示程序
软件开发单片机源程序如下:
- 软件开发/*---------------------------------------------------------*/
- /************************************************************
- 软件开发MC9S12XS128汽车电子开发板
- ************************************************************/
- /*---------------------------------------------------------*/
- #include <hidef.h> /* common defines and macros */
- #include "derivative.h" /* derivative-specific definitions */
- #include "LCD.h"
- #define LEDCPU PORTK_PK4
- #define LEDCPU_dir DDRK_DDRK4
- #define KEY1 PTIH_PTIH3
- #define KEY2 PTIH_PTIH2
- #define KEY1_dir DDRH_DDRH3
- #define KEY2_dir DDRH_DDRH2
- #define BUS_CLOCK 32000000 //总线频率
- #define OSC_CLOCK 16000000 //晶振频率
- char *poem[11] = {
- "长征",
- "毛泽东",
- "红军不怕远征难,",
- "万水千山只等闲,",
- "五岭逶迤腾细浪,",
- "乌蒙磅礴走泥丸。",
- "金沙水拍云崖暖,",
- "大渡桥横铁索寒,",
- "更喜岷山千里雪,",
- "三军过后尽开颜!",
- "",
- } ;
- unsigned char single = 0; //液晶翻页的标志符
- /*************************************************************/
- /* 初始化锁相环 */
- /*************************************************************/
- void INIT_PLL(void)
- {
- CLKSEL &= 0x7f; //set OSCCLK as sysclk
- PLLCTL &= 0x8F; //Disable PLL circuit
- CRGINT &= 0xDF;
-
- #if(BUS_CLOCK == 40000000)
- SYNR = 0x44;
- #elif(BUS_CLOCK == 32000000)
- SYNR = 0x43;
- #elif(BUS_CLOCK == 24000000)
- SYNR = 0x42;
- #endif
- REFDV = 0x81; //PLLCLK=2×OSCCLK×(SYNDIV+1)/(REFDIV+1)=64MHz ,fbus=32M
- PLLCTL =PLLCTL|0x70; //Enable PLL circuit
- asm NOP;
- asm NOP;
- while(!(CRGFLG&0x08)); //PLLCLK is Locked already
- CLKSEL |= 0x80; //set PLLCLK as sysclk
- }
- /************************************************************/
- /* 初始化ECT模块 */
- /************************************************************/
- void initialize_ect(void){
- TSCR1_TFFCA = 1; // 定时器标志位快速清除
- TSCR1_TEN = 1; // 定时器使能位. 1=允许定时器正常工作; 0=使主定时器不起作用(包括计数器)
- TIOS = 0xff; //指定所有通道为输出比较方式
- TCTL1 = 0x00; // 后四个通道设置为定时器与输出引脚断开
- TCTL2 = 0x00; // 前四个通道设置为定时器与输出引脚断开
- TIE = 0x00; // 禁止所有通道定时中断
- TSCR2 = 0x07; // 预分频系数pr2-pr0:111,,时钟周期为4us,
- TFLG1 = 0xff; // 清除各IC/OC中断标志位
- TFLG2 = 0xff; // 清除自由定时器中断标志位
- }

芯片解密