⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.lis

📁 要用到开发工具SD-H08
💻 LIS
字号:
                        .module main.c
                        .area text
                ;             va -> 0,X
                ;             ko -> 2,X
 0000           _main::
 0000 A7FD              ais #-3
 0002 95                tsx
 0003           ; /*-----------------------------------------------------*
 0003           ; *工 程 名:                                    
 0003           ; *硬件连接:                                
 0003           ; *程序描述: SD-HC08 模板生成                            
 0003           ; */
 0003           ; /*[头文件]*/
 0003           ; #include "GP32C.h"                //映像寄存器地址头文件
 0003           ; #include "KB.h"
 0003           ; /*[主函数]*/
 0003           ; void main()
 0003           ;   { unsigned int va;
 0003           ;       unsigned char ko;
 0003           ;       KB_Init();
 0003 CD0000            jsr _KB_Init
 0006 95                tsx
 0007 203F              bra L3
 0009           L2:
 0009           ;   	while(1)
 0009           ;   	{
 0009           L5:
 0009           ;     	do
 0009           ;      		{
 0009           ;      		ko=KB_Scan();
 0009 CD0000            jsr _KB_Scan
 000C 95                tsx
 000D B700              sta *__r1
 000F E702              sta 2,X
 0011           L6:
 0011           ;      		}while(ko==0xffff);//查找有没有按键按下,有就跳出,
 0011 E602              lda 2,X
 0013 A1FF              cmp #-1
 0015 27F2              beq L5
 0017           ;               va=KB_Def(ko);
 0017 87                psha
 0018 CD0000            jsr _KB_Def
 001B A701              ais #1
 001D 95                tsx
 001E B600              lda *__r0
 0020 F7                sta ,X
 0021 B600              lda *__r1
 0023 E701              sta 1,X
 0025           ;               Timer(va);
 0025 87                psha
 0026 F6                lda ,X
 0027 87                psha
 0028 CD004D            jsr _Timer
 002B A702              ais #2
 002D 95                tsx
 002E           L8:
 002E           ;     	do
 002E           ;     		{ko=KB_Scan();
 002E CD0000            jsr _KB_Scan
 0031 95                tsx
 0032 B700              sta *__r1
 0034 E702              sta 2,X
 0036           L9:
 0036 E602              lda 2,X
 0038 A1FF              cmp #-1
 003A 26F2              bne L8
 003C 1A20              bset #5,0x20
 003E A6FF              lda #-1
 0040 B707              sta 0x7
 0042 B603              lda 0x3
 0044 AA30              ora #48
 0046 B703              sta 0x3
 0048           L3:
 0048 20BF              bra L2
 004A           X0:
 004A           L1:
 004A A703              ais #3
 004C                   .dbline 0 ; func end
 004C 81                rts
 004D           ;         frql_w -> 0,X
 004D           ;         frqh_w -> 1,X
 004D           ;          frq_c -> 2,X
 004D           ;            frq -> 6,X
 004D           _Timer::
 004D A7FC              ais #-4
 004F 95                tsx
 0050           ;               }while(ko!=0xffff);//查询按键有没有放开,当放开就停止
 0050           ;       T1SC|=1<<TSTOPBit;//关记数器,第五位.
 0050           ;       DDRD=0xff;
 0050           ;       PTD|=0x30;//使数据口为I/o模式,输出为低电平(为1)
 0050           ;       }
 0050           ;   }
 0050           ; /*定时器初始化设计*/
 0050           ; void Timer(unsigned int frq)
 0050           ; {     unsigned int frq_c;
 0050           ;       unsigned char frqh_w,frql_w;
 0050           ;       frq_c=38400/frq;//得到频率值所对应的周期
 0050 A600              lda #0
 0052 B700              sta *__rlo
 0054 A696              lda #-106
 0056 B700              sta *__rhi
 0058 E607              lda 7,X
 005A 87                psha
 005B E606              lda 6,X
 005D 87                psha
 005E CD0000            jsr __divmod16u
 0061 A702              ais #2
 0063 B600              lda *__rhi
 0065 E702              sta 2,X
 0067 B600              lda *__rlo
 0069 E703              sta 3,X
 006B           ;       frq=((frq_c*2)>>8)&0x00ff;//得到高八位的数值
 006B 48                lsla
 006C E602              lda 2,X
 006E 49                rola
 006F E707              sta 7,X
 0071 4F                clra
 0072 E706              sta 6,X
 0074           ;       frqh_w=frq;
 0074 E607              lda 7,X
 0076 E701              sta 1,X
 0078           ;       frq=((frq_c*2)&0x00ff);//得到相应的低八位
 0078 E603              lda 3,X
 007A 48                lsla
 007B B700              sta *__r1
 007D E602              lda 2,X
 007F 49                rola
 0080 B600              lda *__r1
 0082 E707              sta 7,X
 0084 4F                clra
 0085 E706              sta 6,X
 0087           ;       frql_w=frq;
 0087 E607              lda 7,X
 0089 F7                sta ,X
 008A           ;      //禁止溢出中断、不启动计数、分频因子=64
 008A           ;      T1SC=0b00100110;//分频系数为64,不容许中断,定时器停止
 008A A626              lda #38
 008C B720              sta 0x20
 008E           ;      T1SC0=0b00010110;         //0b00010110设置通道0输出捕捉模式,
 008E A616              lda #22
 0090 B725              sta 0x25
 0092           ;                           //不允许比较中断,输出电平反转
 0092           ;      //计数寄存器初值=0x0000
 0092           ;      T1CNTH=0x00; T1CNTL=0x00;
 0092 3F21              clr 0x21
 0094 3F22              clr 0x22
 0096           ;      //对应的数值产生对应的频率值,在通道寄存器溢出时翻转;
 0096           ;      T1CH0H=frqh_w; T1CH0H=frql_w;
 0096 E601              lda 1,X
 0098 B726              sta 0x26
 009A F6                lda ,X
 009B B726              sta 0x26
 009D           ;      //允许定时器1计数寄存器计数
 009D           ;      T1SC&=~(1<<TSTOPBit);
 009D 1B20              bclr #5,0x20
 009F           L11:
 009F A704              ais #4
 00A1                   .dbline 0 ; func end
 00A1 81                rts

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -